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 me 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 específico (por exemplo, "SHOW GRANTS for myuser1"), mas sim dado o nome de um banco de dados, como determino quais usuários do MySQL têm acesso a esse banco de dados e que privilégios eles têm? Basicamente, como posso obter o gráfico acima na linha de comando?
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;
SELECT * FROM mysql.db WHERE Db = '<database name in LC>';
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;