Pular para o conteúdo principal

Questão de Banco de Dados — MySQL — FGV 2023

Banco de DadosMySQL
Código
fg063587
Banca
FGV
Órgão
DPE-RS
Ano
2023
Nível
Superior
Cargo
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:
  1. Aos usuários u2 e u3 poderão executar a instrução INSERT INTO db.t2 VALUES ROW (2);
  2. Bos usuários u1 e u3 poderão executar a instrução UPDATE db.t2 SET c=2;
  3. Co usuário u2 poderá conceder o privilégio de INSERT para o usuário u1;
  4. Dos usuários u1 e u3 poderão executar a instrução DELETE FROM db.t1;
  5. 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.

Gabarito: letra E

Link permanente: /questoes/fg063587