Os privilégios do MySQL determinam quais ações um usuário pode executar em um banco de dados. O SHOW GRANTS permite revisar esses privilégios para garantir que os usuários tenham o acesso correto. Você pode:
- Ver todos os privilégios de um usuário específico.
- Auditar usuários por motivos de segurança.
- Modificar privilégios com base nos grants atuais.
Antes de continuar lendo, só queria contar sobre o nosso gerenciador de banco de dados MySQL moderno e rápido, o Beekeeper Studio. O editor SQL dele autocompleta enquanto você digita e guarda um histórico de todas as consultas que você executou, o que ajuda bastante na hora de auditar permissões. E ele é grátis para MySQL: baixe aqui.
Sintaxe básica do SHOW GRANTS
SHOW GRANTS FOR 'username'@'host';
- ‘username’ refere-se ao usuário do MySQL.
- ‘host’ refere-se ao hostname ou endereço IP a partir do qual o usuário se conecta.
Vendo os grants de um usuário específico
Suponha que você tenha um usuário, ‘john’, que se conecta a partir de localhost. Para ver as permissões dele, use a seguinte query:
SHOW GRANTS FOR 'john'@'localhost';
Saída esperada:
+---------------------------------------------------------+
| Grants for john@localhost |
+---------------------------------------------------------+
| GRANT USAGE ON *.* TO `john`@`localhost` |
| GRANT SELECT, INSERT ON `mydb`.* TO `john`@`localhost` |
+---------------------------------------------------------+
Nesta saída:
- GRANT USAGE indica que o usuário não tem privilégios globais.
- GRANT SELECT, INSERT ON mydb.* mostra que john tem permissões de
SELECTeINSERTem todas as tabelas do banco de dados ‘mydb’.
Mostrar grants de todos os usuários (MySQL 5.7 e posterior)
No MySQL, não existe um único comando para exibir diretamente os grants de todos os usuários. Porém, você pode gerar a query necessária a partir da tabela mysql.user e então usar SHOW GRANTS para cada usuário:
SELECT CONCAT('SHOW GRANTS FOR \'', user, '\'@\'', host, '\';')
FROM mysql.user;
Esta query gera uma lista de instruções SHOW GRANTS para cada usuário do sistema. Veja um exemplo de saída:
+--------------------------------------------------+
| CONCAT('SHOW GRANTS FOR \'', user, '\'@\'', host |
+--------------------------------------------------+
| SHOW GRANTS FOR 'root'@'localhost'; |
| SHOW GRANTS FOR 'john'@'localhost'; |
| SHOW GRANTS FOR 'admin'@'192.168.1.10'; |
+--------------------------------------------------+
Em seguida, você pode executar a query SHOW GRANTS para ver os privilégios de um usuário específico.
Mostrar grants do usuário atual
Para mostrar os grants do usuário atualmente conectado ao banco de dados, você pode usar a função CURRENT_USER():
SHOW GRANTS FOR CURRENT_USER();
Saída esperada:
+---------------------------------------------------------+
| Grants for current user |
+---------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO `root`@`localhost` |
+---------------------------------------------------------+
Este comando é especialmente útil para usuários que não têm certeza sobre suas próprias permissões.
Interpretando a saída
- GRANT USAGE: indica que o usuário não tem privilégios globais, mas pode ter privilégios específicos em bancos de dados.
- ALL PRIVILEGES: concede todos os privilégios em um banco de dados ou globalmente, exceto o GRANT OPTION.
- GRANT OPTION: permite que um usuário conceda privilégios a outros.
Grants específicos de banco de dados: permissões como SELECT, INSERT, UPDATE e DELETE podem ser concedidas para um banco de dados ou tabela específica.
Entendendo os GRANTS do MySQL
O MySQL oferece a instrução GRANT, que permite aos administradores conceder privilégios aos usuários.
Há também a instrução inversa REVOKE para revogar privilégios.
Porém, antes de alterar permissões, precisamos saber quais permissões estão em vigor – e é aí que entra o comando SHOW GRANTS.
O comando SHOW GRANTS exibe a instrução GRANT que precisa ser executada para duplicar os privilégios de um usuário.
Este comando é compatível com os engines de banco de dados MySQL e MariaDB.
Conclusão
Resumindo, o comando SHOW GRANTS no MySQL é usado para exibir os privilégios dos usuários. É uma ferramenta importante para administradores de banco de dados auditarem e gerenciarem as permissões dos usuários.
Outros artigos que você pode gostar:
O Beekeeper Studio é uma GUI para MySQL grátis e open source
Tenho usado o Beekeeper Studio no meu trabalho com MySQL ultimamente, e ele rapidamente se tornou uma das minhas ferramentas de banco de dados favoritas. A interface é limpa, moderna e sem distrações, o que facilita focar nas consultas sem a bagunça que você encontra em outras ferramentas. - Surendra Singh
O Beekeeper Studio é um cliente MySQL rápido, intuitivo e fácil de usar. Ele também suporta vários outros bancos de dados e funciona muito bem no Windows, Mac e Linux.
O que os usuários de MySQL dizem sobre o Beekeeper Studio
Escolhi este programa depois de anos usando o phpMyAdmin — é como entrar em um mundo de qualidade superior; aqui, senti de verdade que o usuário é tratado com cuidado. O conceito, a implementação, a experiência prática — sou sinceramente grato ao Matthew por tudo isso.
Ferramenta fabulosa, a IDE mais prática que encontrei até hoje para administrar bancos Postgres e MySql - simplesmente funciona, sem complicação :-)