Pular para o conteúdo principal

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

Banco de DadosMySQL
Código
fg072671
Banca
FGV
Órgão
TJ-SE
Ano
2023
Nível
Superior
Cargo
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):
  1. Au2 poderá executar a instrução DELETE FROM db.t1;
  2. Bu3 poderá conceder o privilégio de INSERT para o usuário u1;
  3. Cu2 poderá conceder o privilégio de DELETE para o usuário u1;
  4. Du1 e u3 poderão executar a instrução UPDATE db.t2 SET c=2;
  5. 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:

  1. Criação do banco db e das tabelas t1 e t2, cada uma com uma linha.

  2. Criação dos usuários u1, u2 e u3.

  3. GRANT SELECT, UPDATE ON db.t1 TO u1; → u1 obtém SELECT e UPDATE apenas na tabela t1.

  4. GRANT ALL PRIVILEGES ON db.t2 TO u2; → u2 obtém todos os privilégios (SELECT, INSERT, UPDATE, DELETE, etc.) na tabela t2.

  5. 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.

  6. 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.

1u1 (db.t1)
SELECT
UPDATE
Sem GRANT OPTION
2u2 (db.t2)
ALL PRIVILEGES (inicial)
REVOKE INSERT (perde INSERT)
Mantém SELECT, UPDATE, DELETE
Sem GRANT OPTION
3u3 (db.*)
SELECT, INSERT, UPDATE
WITH GRANT OPTION (pode conceder)
Privilégios MySQL (GRANT/REVOKE)
LEVELsoulevel.com.br
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.

Gabarito: letra B.

Link permanente: /questoes/fg072671