Questão de Banco de Dados — MySQL — FCC 2016
- Código
- fc028451
- Banca
- FCC
- Órgão
- CREMESP
- Ano
- 2016
- Nível
- Superior
- Cargo
- Analista de Tecnologia da Informação - Banco de Dados
- Adatabase_priv.
- Bcolumns_priv.
- Cprocs_priv.
- Ddb.
- Eproxies_priv.
GabaritoD — db.
Gabarito: letra D. A tabela mysql.db (ou simplesmente db) armazena os privilégios concedidos em nível de banco de dados. As demais alternativas correspondem a tabelas que gerenciam privilégios em outros níveis (coluna, procedure/proxy) ou não existem.
O MySQL 5.7 possui um conjunto de tabelas no banco mysql que controlam a segurança. Cada uma cobre um escopo específico: global, banco de dados, tabela, coluna, rotinas (procedures/functions) e proxy. A questão testa justamente o conhecimento do escopo de cada tabela.
Tabela do Sistema | Escopo de Privilégio | Função Principal | Exemplo de Uso |
|---|---|---|---|
| Banco de dados | Armazena privilégios concedidos a usuários para bancos de dados específicos | SELECT, INSERT, UPDATE em um banco específico |
| Coluna | Armazena privilégios em nível de coluna de uma tabela | Permissão de SELECT em uma coluna específica |
| Stored procedures/functions | Armazena privilégios sobre rotinas armazenadas | Execução de uma procedure específica |
| Proxy | Gerencia privilégios de proxy (usuários que podem assumir identidade de outros) | Usuário A pode atuar como usuário B |
| — | Não existe no MySQL 5.7 | Distrator criado pela banca |
database_priv não é uma tabela real do sistema. A banca criou esse nome como distrator. A tabela correta para nível de banco de dados é db.
columns_priv é a tabela que armazena privilégios em nível de coluna de uma tabela, não de banco de dados. O candidato pode confundir o escopo.
procs_priv é a tabela que armazena privilégios sobre stored procedures e stored functions, não sobre bancos de dados.
A tabela db (no banco mysql) contém os privilégios concedidos a usuários para bancos de dados específicos. Cada linha associa um usuário a um banco e lista os privilégios (SELECT, INSERT, etc.) naquele banco.
proxies_priv é a tabela que gerencia privilégios de proxy (usuários que podem assumir a identidade de outros), não se aplica a nível de banco de dados.
Para memorizar, relacione o sufixo ao escopo:
db → database (banco de dados)
columns_priv → colunas
procs_priv → procedures
proxies_priv → proxy
tables_priv → tabelas (não listada, mas existe)
user → nível global (não listada)
Gabarito: letra D.
Link permanente: /questoes/fc028451