Quais usuários do MySQL têm acesso a um banco de dados?

13

Como posso saber quais usuários do MySQL têm acesso a um banco de dados e quais privilégios eles têm?

Parece que consigo obter essas informações do phpMyAdmin quando clico em "Privilégios". . .

                 Users having access to "mydatabase"
User     Host       Type               Privileges              Grant
myuser1  %          database-specific  ALL PRIVILEGES          Yes
root     localhost  global             ALL PRIVILEGES          Yes
myuser2  %          database-specific  SELECT, INSERT, UPDATE  No

. . . mas eu gostaria de saber como executar essa consulta na linha de comando.

(O phpMyAdmin geralmente mostra a sintaxe SQL do comando que está sendo executado, mas não a vejo neste caso.)

Observe que não estou perguntando o que concede a um usuário em particular (ex. "SHOW GRANTS for myuser1"), mas sim, dado o nome de um banco de dados, como determino quais usuários MySQL têm acesso a esse banco de dados e quais privilégios eles têm ? Basicamente, como posso obter o gráfico acima na linha de comando?

Philip Durbin
fonte

Respostas:

16

Você pode anexar \ G ao comando para obter os resultados exibidos na tela 'grid'

SELECT * FROM mysql.db WHERE Db = '<database name in LC>'\G;
Graham
fonte
4
+1 para \ G não vi isso antes
jx12345 08/04
8
SELECT * FROM mysql.db WHERE Db = '<database name in LC>';
K. Brian Kelley
fonte
Obrigado. Essa resposta parece gerar os mesmos dados brutos que o gráfico da pergunta. . . mas em um formato menos legível. Eu acho que apresentar os dados no mesmo formato é um exercício para o leitor. . . ;)
Philip Durbin
2

Você pode tentar, deve fornecer a melhor legibilidade:

select db 'DATABASE', host HOST, user USER from mysql.db where db = '<databasename>';

Algo mais memorável para o CLI:

select db,host,user from mysql.db;
sjas
fonte