Observe o seguinte script de concessão de privilégios em MYS...
Observe o seguinte script de concessão de privilégios em MYSQL:
CREATE DATABASE db;
CREATE TABLE db.t1 (c INT);
INSERT INTO db.t1 VALUES ROW (1);
CREATE TABLE db.t2 (c INT);
INSERT INTO db.t2 VALUES ROW (1);
CREATE USER u1;
GRANT SELECT, UPDATE ON db.t1 TO u1 WITH GRANT
OPTION;
CREATE USER u2;
GRANT SELECT, INSERT ON db.t2 TO u2;
CREATE USER u3;
GRANT ALL ON db.* TO u3;
REVOKE INSERT ON db.t2 FROM u2;
Após a execução do script apresentado, é correto afirmar que:
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: E - o usuário u1 poderá conceder o privilégio de UPDATE para o usuário u2.
Para compreender essa questão, é importante ter um bom entendimento sobre o sistema de controle de privilégios do MySQL. Os privilégios determinam o que os usuários podem fazer, como a seleção de dados (SELECT), atualização de dados (UPDATE), inserção de dados (INSERT) e exclusão de dados (DELETE). Existem ainda outros privilégios como o ALL, que concede todos os privilégios para um determinado escopo (tabela, banco de dados, etc.).
O comando GRANT
é usado para conceder privilégios a usuários, enquanto o comando REVOKE
é usado para revogar privilégios. Quando o GRANT
é seguido pela cláusula WITH GRANT OPTION, o usuário que recebe o privilégio também obtém o direito de conceder esse mesmo privilégio a outros usuários.
No script apresentado, o usuário u1 recebeu o privilégio de SELECT e UPDATE na tabela db.t1 com a opção de conceder esses privilégios a outros usuários (WITH GRANT OPTION
). Portanto, u1 tem a capacidade de conceder a outros usuários o privilégio de UPDATE na tabela db.t1, e também poderia concedê-lo para a tabela db.t2 se ele tivesse tal privilégio na segunda tabela. A alternativa correta é a E, pois o usuário u1 realmente pode conceder o privilégio de UPDATE, que ele possui, para o usuário u2.
As demais alternativas são incorretas:
- A: Está errado porque o usuário u2 teve o privilégio de INSERT na tabela db.t2 revogado, então ele não pode executar a instrução de INSERT. O usuário u3 pode, pois tem ALL privileges.
- B: Está errado porque o usuário u1 não tem privilégios na tabela db.t2, então ele não pode executar UPDATE nessa tabela.
- C: Está errado porque o usuário u2 não tem a opção de GRANT (não pode conceder privilégios que ele possui para outros usuários).
- D: Está errado porque apenas o usuário u3 tem o privilégio de DELETE (contido dentro do ALL privileges), o usuário u1 não tem o privilégio de DELETE na tabela db.t1.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
E
- CREATE DATABASE db; cria um banco de dados chamado db.
- CREATE TABLE db.t1 (c INT); cria uma tabela chamada t1 no banco de dados db, com uma coluna c do tipo inteiro.
- INSERT INTO db.t1 VALUES ROW (1); insere um registro na tabela t1 com o valor 1 na coluna c.
- CREATE TABLE db.t2 (c INT); cria uma tabela chamada t2 no banco de dados db, com uma coluna c do tipo inteiro.
- INSERT INTO db.t2 VALUES ROW (1); insere um registro na tabela t2 com o valor 1 na coluna c.
- CREATE USER u1; cria um usuário chamado u1.
- GRANT SELECT, UPDATE ON db.t1 TO u1 WITH GRANT OPTION; concede os privilégios de selecionar e atualizar os dados da tabela t1 ao usuário u1, com a opção de conceder esses privilégios a outros usuários.
- CREATE USER u2; cria um usuário chamado u2.
- GRANT SELECT, INSERT ON db.t2 TO u2; concede os privilégios de selecionar e inserir os dados da tabela t2 ao usuário u2.
- CREATE USER u3; cria um usuário chamado u3.
- GRANT ALL ON db.* TO u3; concede todos os privilégios sobre todos os objetos do banco de dados db ao usuário u3.
- REVOKE INSERT ON db.t2 FROM u2; revoga o privilégio de inserir os dados da tabela t2 do usuário u2.
Após a execução do script, é correto afirmar que:
A Falso, pois o usuário u2 teve o privilégio de inserir revogado e só poderá selecionar os dados da tabela t2. O usuário u3 poderá executar a instrução, pois tem todos os privilégios sobre o banco de dados db.
B Falso, pois o usuário u1 só tem os privilégios de selecionar e atualizar os dados da tabela t1, não da tabela t2. O usuário u3 poderá executar a instrução, pois tem todos os privilégios sobre o banco de dados db.
C Falso, pois o usuário u2 não tem a opção de conceder os privilégios que recebeu para outros usuários. Além disso, ele teve o privilégio de inserir revogado da tabela t2.
D Falso, pois o usuário u1 só tem os privilégios de selecionar e atualizar os dados da tabela t1, não de deletá-los. O usuário u3 poderá executar a instrução, pois tem todos os privilégios sobre o banco de dados db.
E Verdadeiro, pois o usuário u1 tem o privilégio de atualizar os dados da tabela t1 com a opção de conceder esse privilégio a outros usuários.
Fonte: Bing
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo