Analista Judiciário - Especialidade - Análise de Sistemas - Suporte Técnico em Infraestrutura
Observe o seguinte script de concessão de privilégios em MySQL a seguir.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;CREATE USER u2;GRANT ALL PRIVILEGES ON db.t2 TO u2;CREATE USER u3;GRANT SELECT, INSERT, UPDATE ON db.* TO u3 WITHGRANT OPTION;REVOKE INSERT ON db.t2 FROM u2;Após a execução do script apresentado, é correto afirmar que o(s) usuário(s):
Au2 poderá executar a instrução DELETE FROM db.t1;
Bu3 poderá conceder o privilégio de INSERT para o usuário u1;
Cu2 poderá conceder o privilégio de DELETE para o usuário u1;
Du1 e u3 poderão executar a instrução UPDATE db.t2 SET c=2;
Eu2 poderá executar a instrução INSERT INTO db.t2 VALUES ROW (2);
Revelar gabarito e comentário▾
GabaritoB — u3 poderá conceder o privilégio de INSERT para o usuário u1;
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Gerenciamento de privilégios no MySQL: GRANT e REVOKE
Gabarito: letra B. O usuário u3 recebeu os privilégios SELECT, INSERT e UPDATE sobre todas as tabelas do banco db (db.*) com a opção WITH GRANT OPTION, podendo, portanto, conceder esses mesmos privilégios a outros usuários. Assim, u3 pode conceder o privilégio INSERT a u1.
A questão exige a análise passo a passo do script de concessão e revogação de privilégios. Vamos examinar cada declaração:
Criação do banco db e das tabelas t1 e t2, cada uma com uma linha.
Criação dos usuários u1, u2 e u3.
GRANT SELECT, UPDATE ON db.t1 TO u1; → u1 obtém SELECT e UPDATE apenas na tabela t1.
GRANT ALL PRIVILEGES ON db.t2 TO u2; → u2 obtém todos os privilégios (SELECT, INSERT, UPDATE, DELETE, etc.) na tabela t2.
GRANT SELECT, INSERT, UPDATE ON db.* TO u3 WITH GRANT OPTION; → u3 obtém SELECT, INSERT e UPDATE em todas as tabelas do banco db (db.*) e, por causa do WITH GRANT OPTION, pode conceder esses mesmos privilégios a outros usuários.
REVOKE INSERT ON db.t2 FROM u2; → u2 perde o privilégio INSERT especificamente na tabela t2. Os demais privilégios (SELECT, UPDATE, DELETE, etc.) permanecem.
Privilégios MySQL (GRANT/REVOKE): u1 (db.t1) (SELECT, UPDATE, Sem GRANT OPTION); u2 (db.t2) (ALL PRIVILEGES (inicial), REVOKE INSERT (perde INSERT), Mantém SELECT, UPDATE, DELETE, Sem GRANT OPTION); u3 (db.*) (SELECT, INSERT, UPDATE, WITH GRANT OPTION (pode conceder))
Alternativa A — ❌ Incorreta
u2 poderá executar a instrução DELETE FROM db.t1;
u2 possui privilégios apenas na tabela db.t2. Não tem nenhum privilégio sobre db.t1 (nem SELECT, nem DELETE). Portanto, não pode executar DELETE em t1.
Alternativa B — ✅ Correta ⟵ GABARITO
u3 poderá conceder o privilégio de INSERT para o usuário u1;
u3 possui os privilégios SELECT, INSERT e UPDATE sobre todas as tabelas do banco db (db.) com a opção WITH GRANT OPTION. Isso significa que u3 pode conceder esses mesmos privilégios a qualquer outro usuário, inclusive u1. Como u3 tem INSERT em `db., pode conceder INSERT em qualquer tabela do banco, como db.t1 ou db.t2`, para u1. Portanto, a afirmação está correta.
Alternativa C — ❌ Incorreta
u2 poderá conceder o privilégio de DELETE para o usuário u1;
Embora u2 ainda possua o privilégio DELETE em db.t2 (pois o REVOKE retirou apenas INSERT), ele não possui a opção WITH GRANT OPTION em nenhum privilégio. Sem essa opção, u2 não pode conceder privilégios a outros usuários.
Alternativa D — ❌ Incorreta
u1 e u3 poderão executar a instrução UPDATE db.t2 SET c=2;
u1 possui UPDATE apenas em db.t1, não em db.t2. Portanto, não pode executar UPDATE em t2.
u3 possui UPDATE em todas as tabelas de db (db.*), incluindo t2, então pode executar a instrução.
A afirmação exige que ambos possam executar o UPDATE, o que não ocorre. Logo, está incorreta.
Alternativa E — ❌ Incorreta
u2 poderá executar a instrução INSERT INTO db.t2 VALUES ROW (2);
O script revogou explicitamente o privilégio INSERT em db.t2 do usuário u2 com o comando REVOKE INSERT ON db.t2 FROM u2;. Portanto, u2 perdeu a capacidade de inserir linhas em t2.