Como posso mostrar os privilégios do usuário no MySQL?


69

Eu sei que posso definir os privilégios do usuário da seguinte maneira simples:

grant all on [database name].[table name] to [user name]@[host name];

Mas como posso ver os privilégios existentes?

Eu preciso ver dados semelhantes aos que são usados ​​na concessão. Em outras palavras, quero saber que um determinado usuário tem um determinado acesso a uma determinada tabela de um determinado banco de dados de um determinado host.

Como posso conseguir?

Respostas:



51

Aqui está a documentação do MySQL para SHOW GRANTS:

SHOW GRANTS [FOR user]

Esta instrução lista a instrução GRANT ou instruções que devem ser emitidas para duplicar os privilégios concedidos a uma conta de usuário do MySQL. A conta é nomeada usando o mesmo formato da declaração GRANT; por exemplo, 'jeffrey' @ 'localhost'. Se você especificar apenas a parte do nome de usuário do nome da conta, será usada uma parte do nome do host de '%'. Para obter informações adicionais sobre a especificação de nomes de contas, consulte a Seção 12.5.1.3, “Sintaxe de GRANT”.

mysql> SHOW GRANTS FOR 'root'@'localhost';
+---------------------------------------------------------------------+
| Grants for root@localhost                                           |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
+---------------------------------------------------------------------+

Para listar os privilégios concedidos à conta que você está usando para se conectar ao servidor, você pode usar qualquer uma das seguintes instruções:

SHOW GRANTS;
SHOW GRANTS FOR CURRENT_USER;
SHOW GRANTS FOR CURRENT_USER();

A partir do MySQL 5.0.24, se SHOW GRANTS FOR CURRENT_USER (ou qualquer uma das sintaxes equivalentes) for usado no contexto DEFINER, como em um procedimento armazenado definido com o SQL SECURITY DEFINER), as concessões exibidas são as do definidor e não é o invocador.

SHOW GRANTS exibe apenas os privilégios concedidos explicitamente à conta nomeada. Outros privilégios podem estar disponíveis para a conta, mas eles não são exibidos. Por exemplo, se existir uma conta anônima, a conta nomeada poderá usar seus privilégios, mas o SHOW GRANTS não os exibirá.

SHOW GRANTS requer o privilégio SELECT para o banco de dados mysql.


SHOW GRANTS requires the SELECT privilege for the mysql system database, except to display privileges and roles for the current user.
Sandip Bhattacharya
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.