Seja o esquema de um banco de dados relacional seguinte, criado pelo usuário U1, que possui direito de criação de tabelas no ambiente:AUTOR ( id_autor <PK>, nome_autor ) RELATORIO ( id_rel <PK>, conteudo, id_autor <FK>, data_registro ) Restrições de integridade: Tabela AUTOR: id_autor é chave primária; nome_autor ≠ NULO. Tabela RELATORIO: id_rel é chave primária; conteudo ≠ NULO; data_registro ≠ NULO; id_autor é chave estrangeira e referencia LOCALIDADE(id_loc). Os usuários U2 e U3 receberam de U1 o direito de consulta e atualização nas tabelas AUTOR e RELATORIO. Dado que o usuário U2 desfruta da confiança de U1, ele recebeu o benefício de propagação dos direitos que recebeu. Já o usuário U4 recebeu de U1 apenas o direito de consulta na tabela RELATORIO. Mais adiante, o usuário U1 soube que o usuário U2 propagou o direito de atualização para o usuário U4 na tabela RELATORIO, sem que ele (usuário U1) tivesse conhecimento do fato. Tendo em vista a quebra de confiança, o usuário U1 decidiu revogar todos os direitos concedidos anteriormente a U2, deixando-o sem acesso ao seu banco de dados. Considerando os mecanismos de segurança discricionários de sistemas de bancos de dados relacionais, assinale a opção que indica o comando SQL a seguir reflete alguma das situações descritas no contexto apresentado.
AGRANT select ON Relatorio TO U4 WITH GRANT OPTION
BGRANT select, update ON Autor, Relatorio TO U2 WITH GRANT OPTION
CGRANT select, update ON Autor, Relatorio TO U2, U3
DREVOKE select, update ON Autor, Relatorio FROM U2 WITHOUT GRANT OPTION
EREVOKE select, update ON Relatorio FROM U3
Revelar gabarito e comentário▾
GabaritoB — GRANT select, update ON Autor, Relatorio TO U2 WITH GRANT OPTION
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”.
Controle de Acesso Discricionário (DAC) em SQL
Gabarito: letra B. O comando GRANT select, update ON Autor, Relatorio TO U2 WITH GRANT OPTION descreve exatamente a concessão feita por U1 a U2: direitos de consulta e atualização nas duas tabelas, com a possibilidade de propagação (WITH GRANT OPTION). Nenhuma das demais alternativas corresponde corretamente a uma situação do enunciado.
A banca testa o conhecimento sobre os comandos GRANT e REVOKE e a cláusula WITH GRANT OPTION. Vamos analisar cada alternativa.
Controle de acesso DAC (SQL)
1GRANT
Privilégios
SELECT
UPDATE
INSERT
DELETE
Destinatário
Usuário
PUBLIC
Opção de propagação
WITH GRANT OPTION (pode repassar)
Sem a cláusula (não pode repassar)
2REVOKE
Sintaxe correta
REVOKE ... FROM ... CASCADE
REVOKE ... FROM ... RESTRICT
WITHOUT GRANT OPTION (sintaxe inválida)
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta
Concede SELECT com WITH GRANT OPTION a U4 na tabela Relatorio. Mas o enunciado diz que U4 recebeu apenas direito de consulta, sem propagação. Portanto, não reflete a situação.
Alternativa B — ✅ Correta ⟵ GABARITO
GRANT select, update ON Autor, Relatorio TO U2 WITH GRANT OPTION. Isso corresponde exatamente ao que U1 fez: U2 recebeu SELECT e UPDATE nas duas tabelas, e por ser de confiança, ganhou também o privilégio de propagar esses direitos (WITH GRANT OPTION). O comando está sintaticamente correto e reflete a situação descrita.
Alternativa C — ❌ Incorreta
Concede SELECT e UPDATE a U2 e U3, mas omiteWITH GRANT OPTION para U2. No enunciado, U2 tem esse privilégio. Além disso, U3 recebeu os mesmos direitos, mas sem propagação – a alternativa não diferencia. Logo, não corresponde exatamente ao cenário.
Alternativa D — ❌ Incorreta
REVOKE select, update ON Autor, Relatorio FROM U2 WITHOUT GRANT OPTION. A sintaxe do comando REVOKE em SQL não utiliza a cláusula WITHOUT GRANT OPTION. O correto seria REVOKE ... FROM ... {CASCADE | RESTRICT}. Portanto, o comando é inválido e não reflete a revogação feita por U1 (que provavelmente usou CASCADE para propagar a revogação aos direitos concedidos por U2).
Alternativa E — ❌ Incorreta
REVOKE select, update ON Relatorio FROM U3. Revoga direitos de U3 sobre Relatorio. No entanto, U1 decidiu revogar todos os direitos de U2, não de U3. U3 permanece com acesso. Logo, o comando não condiz com a situação.
NÃO CAIA NESSA!
A banca explora a sintaxe incorreta do REVOKE (alternativa D) e a omissão do WITH GRANT OPTION (alternativa C). Cuidado: o REVOKE não aceita WITHOUT GRANT OPTION; revise a sintaxe padrão (CASCADE/RESTRICT).