Observe o seguinte script de concessão de privilégios em MYS...

Próximas questões
Com base no mesmo assunto
Q2220434 Banco de Dados

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:

Alternativas

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:

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.

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