54 votos

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

Sé que puedo establecer los privilegios del usuario de la siguiente manera sencilla:

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 utilizan en la subvención. Es decir, quiero saber que un determinado usuario tiene un determinado acceso a una determinada tabla de una determinada base de datos desde un determinado host.

¿Cómo puedo conseguirlo?

62voto

John Gardeniers Puntos 22554

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

40voto

radious Puntos 344

Aquí está el Documentación de MySQL para SHOW GRANTS :

SHOW GRANTS [FOR user]

Esta sentencia enumera la sentencia o sentencias GRANT que deben emitirse para duplicar los privilegios que se conceden a una cuenta de usuario de MySQL. La cuenta se nombra utilizando el mismo formato que para la sentencia GRANT; por ejemplo, 'jeffrey'@'localhost'. Si especifica sólo la parte del nombre de usuario del nombre de la cuenta, se utiliza una parte del nombre del host de '%'. Para obtener información adicional sobre la especificación de nombres de cuentas, consulte la Sección 12.5.1.3, "Sintaxis de GRANT".

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

Para listar los privilegios concedidos a la cuenta que está utilizando para conectarse al servidor, puede utilizar cualquiera de las siguientes sentencias:

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 de DEFINER, como por ejemplo dentro de un procedimiento almacenado que se define con SQL SECURITY DEFINER), las concesiones que se muestran son las del definidor y no las del invocador.

SHOW GRANTS muestra sólo los privilegios concedidos explícitamente a la cuenta nombrada. Puede haber otros privilegios disponibles para la cuenta, pero no se muestran. Por ejemplo, si existe una cuenta anónima, la cuenta nombrada podría utilizar sus privilegios, pero SHOW GRANTS no los mostrará.

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

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: