Analista - Área de Apoio Especializado - Tecnologia da Informação - 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 GRANTOPTION;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:
Aos usuários u2 e u3 poderão executar a instrução INSERT INTO db.t2 VALUES ROW (2);
Bos usuários u1 e u3 poderão executar a instrução UPDATE db.t2 SET c=2;
Co usuário u2 poderá conceder o privilégio de INSERT para o usuário u1;
Dos usuários u1 e u3 poderão executar a instrução DELETE FROM db.t1;
Eo usuário u1 poderá conceder o privilégio de UPDATE para o usuário u2.
Revelar gabarito e comentário▾
GabaritoE — o usuário u1 poderá conceder o privilégio de UPDATE para o usuário u2.
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”.
MySQL: Controle de Acesso (GRANT/REVOKE)
Gabarito: letra E. O usuário u1 possui o privilégio UPDATE na tabela db.t1 com a cláusula WITH GRANT OPTION, o que lhe permite conceder esse mesmo privilégio a outros usuários, como u2. As demais alternativas falham por não considerar corretamente os privilégios após o REVOKE ou a ausência de GRANT OPTION.
Análise do Script
O script cria três usuários com privilégios distintos:
u1: SELECT, UPDATE ON db.t1 WITH GRANT OPTION → pode consultar e atualizar a tabela t1 e conceder esses privilégios.
u2: SELECT, INSERT ON db.t2 → mas depois o INSERT é revogado (REVOKE INSERT ON db.t2 FROM u2). Fica apenas com SELECT em t2. Não possui WITH GRANT OPTION.
u3: ALL ON db.* → possui todos os privilégios em todas as tabelas do banco db (t1 e t2), incluindo SELECT, INSERT, UPDATE, DELETE, etc.
Usuário
Privilégios em db.t1
Privilégios em db.t2
WITH GRANT OPTION
Pode conceder privilégios?
u1
SELECT, UPDATE
Nenhum
Sim (em db.t1)
Sim (apenas SELECT e UPDATE em db.t1)
u2
Nenhum
SELECT (INSERT revogado)
Não
Não
u3
ALL (todos)
ALL (todos)
Não
Não
Privilégios MySQL
1WITH GRANT OPTION
Pode conceder o mesmo privilégio
Exemplo: u1 (UPDATE ON db.t1)
2Sem GRANT OPTION
Não pode conceder
Exemplo: u2 (SELECT ON db.t2)
3REVOKE
Remove privilégio específico
Exemplo: u2 perde INSERT
4ALL ON db.*
Todos os privilégios no banco
Exemplo: u3 em db.t1 e db.t2
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta
Afirma que u2 e u3 podem executar INSERT INTO db.t2 VALUES ROW (2). u2 teve o INSERT revogado, logo não pode. u3 pode, mas a exigência é que ambos possam. Erro: u2 perdeu o privilégio de inserir.
Alternativa B — ❌ Incorreta
Afirma que u1 e u3 podem executar UPDATE db.t2 SET c=2. u1 só possui privilégios em db.t1, não em db.t2. u3 pode, mas não ambos. Erro: u1 não tem permissão na tabela t2.
Alternativa C — ❌ Incorreta
Afirma que u2 pode conceder INSERT a u1. u2 nunca teve WITH GRANT OPTION – mesmo antes do REVOKE ele não poderia conceder privilégios. Após o REVOKE, perdeu o INSERT. Erro: falta a cláusula WITH GRANT OPTION.
Alternativa D — ❌ Incorreta
Afirma que u1 e u3 podem executar DELETE FROM db.t1. u1 possui apenas SELECT e UPDATE em t1, não DELETE. u3 pode, mas não ambos. Erro: u1 não tem privilégio de exclusão.
Alternativa E — ✅ Correta ⟵ GABARITO
Afirma que u1 pode conceder o privilégio de UPDATE a u2. Correto: u1 possui UPDATE ON db.t1 WITH GRANT OPTION. Com essa cláusula, ele pode conceder o privilégio UPDATE (na tabela t1) a qualquer outro usuário, inclusive u2. A concessão é válida. Acerto.
PEGA ESSA DICA!
Em questões de permissões MySQL, identifique:
Quem possui WITH GRANT OPTION (só esses podem conceder privilégios).
O escopo: privilégio em db.* vale para todas as tabelas do banco; em db.t1 só para aquela tabela.
O efeito do REVOKE: remove o privilégio específico, mas não afeta outros.