¿Cómo puedo mostrar los privilegios del usuario en MySQL?

69

Sé que puedo configurar los privilegios del usuario de la siguiente manera simple:

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

Pero, ¿cómo puedo ver los privilegios existentes?

Necesito ver datos similares a los que se usan en Grant. En otras palabras, quiero saber que un usuario dado tiene un acceso dado a una tabla dada de una base de datos dada desde un host dado.

¿Cómo puedo obtenerlo?

romano
fuente

Respuestas:

75

El comando SHOW GRANTS [FOR user]es lo que estás buscando. Ver aquí para más detalles.

John Gardeniers
fuente
51

Aquí está la documentación de MySQL para SHOW GRANTS:

SHOW GRANTS [FOR user]

Esta declaración enumera la declaración GRANT o las declaraciones que deben emitirse para duplicar los privilegios otorgados a una cuenta de usuario MySQL. La cuenta se nombra usando el mismo formato que para la declaración GRANT; por ejemplo, 'jeffrey' @ 'localhost'. Si especifica solo la parte del nombre de usuario del nombre de la cuenta, se utiliza una parte del nombre de host de '%'. Para obtener información adicional sobre cómo especificar nombres de cuenta, consulte la Sección 12.5.1.3, “Sintaxis GRANT”.

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

Para enumerar los privilegios otorgados a la cuenta que está utilizando para conectarse al servidor, puede usar cualquiera de las siguientes declaraciones:

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

A partir de MySQL 5.0.24, si se utiliza SHOW GRANTS FOR CURRENT_USER (o cualquiera de las sintaxis equivalentes) en el contexto DEFINER, como dentro de un procedimiento almacenado que se define con SQL SECURITY DEFINER), las concesiones que se muestran son las del definidor y No el invocador.

SHOW GRANTS muestra solo los privilegios otorgados explícitamente a la cuenta nombrada. Otros privilegios pueden estar disponibles para la cuenta, pero no se muestran. Por ejemplo, si existe una cuenta anónima, la cuenta nombrada podría usar sus privilegios, pero SHOW GRANTS no los mostrará.

SHOW GRANTS requiere el privilegio SELECT para la base de datos mysql.

radiante
fuente
SHOW GRANTS requires the SELECT privilege for the mysql system database, except to display privileges and roles for the current user.
Sandip Bhattacharya