¿Qué usuarios de MySQL tienen acceso a una base de datos?

13

¿Cómo puedo saber qué usuarios de MySQL tienen acceso a una base de datos y qué privilegios tienen?

Parece que puedo obtener esta información de phpMyAdmin cuando hago clic en "Privilegios". . .

                 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

. . . pero me gustaría saber cómo realizar esta consulta desde la línea de comandos.

(phpMyAdmin a menudo me muestra la sintaxis SQL del comando que está ejecutando, pero no lo veo en este caso).

Tenga en cuenta que no estoy preguntando qué otorga un usuario en particular (es decir, "SHOW GRANTS for myuser1"), sino más bien, dado el nombre de una base de datos, ¿cómo puedo determinar qué usuarios de MySQL tienen acceso a esa base de datos y qué privilegios tienen? ? Básicamente, ¿cómo puedo obtener el gráfico anterior desde la línea de comando?

Philip Durbin
fuente

Respuestas:

16

Puede agregar \ G al comando para obtener los resultados que se muestran en la vista 'cuadrícula'

SELECT * FROM mysql.db WHERE Db = '<database name in LC>'\G;
Graham
fuente
44
+1 para \ G no visto eso antes
jx12345
8
SELECT * FROM mysql.db WHERE Db = '<database name in LC>';
K. Brian Kelley
fuente
Gracias. Esta respuesta parece generar los mismos datos sin procesar que el gráfico de la pregunta. . . pero en un formato menos legible. Supongo que presentar los datos en el mismo formato es un ejercicio para el lector. . . ;)
Philip Durbin
2

Puede probar esto, debe proporcionar la mejor legibilidad:

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

Algo más memorizable para el cli:

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