Los privilegios de MySQL determinan qué acciones puede realizar un usuario dentro de una base de datos. SHOW GRANTS te permite revisar estos privilegios para asegurarte de que los usuarios tengan el acceso correcto. Puedes:
- Ver todos los privilegios de un usuario específico.
- Auditar usuarios por motivos de seguridad.
- Modificar privilegios con base en los permisos actuales.
Antes de que sigas leyendo, quería contarte sobre nuestro gestor de bases de datos MySQL moderno y rápido, Beekeeper Studio. Su editor SQL autocompleta mientras escribes y guarda un historial de cada consulta que has ejecutado, algo muy útil cuando estás auditando permisos. Además, es gratis para MySQL: descárgalo aquí.
Sintaxis básica de SHOW GRANTS
SHOW GRANTS FOR 'username'@'host';
- ‘username’ se refiere al usuario de MySQL.
- ‘host’ se refiere al nombre de host o la dirección IP desde la que se conecta el usuario.
Ver los permisos de un usuario específico
Supongamos que tienes un usuario, ‘john’, que se conecta desde localhost. Para ver sus permisos, usa la siguiente consulta:
SHOW GRANTS FOR 'john'@'localhost';
Resultado esperado:
+---------------------------------------------------------+
| Grants for john@localhost |
+---------------------------------------------------------+
| GRANT USAGE ON *.* TO `john`@`localhost` |
| GRANT SELECT, INSERT ON `mydb`.* TO `john`@`localhost` |
+---------------------------------------------------------+
En este resultado:
- GRANT USAGE indica que el usuario no tiene privilegios globales.
- GRANT SELECT, INSERT ON mydb.* muestra que john tiene permisos de
SELECTeINSERTen todas las tablas de la base de datos ‘mydb’.
Mostrar los permisos de todos los usuarios (MySQL 5.7 y posteriores)
En MySQL no existe un solo comando para mostrar directamente los permisos de todos los usuarios. Sin embargo, puedes generar la consulta necesaria a partir de la tabla mysql.user y luego usar SHOW GRANTS para cada usuario:
SELECT CONCAT('SHOW GRANTS FOR \'', user, '\'@\'', host, '\';')
FROM mysql.user;
Esta consulta genera una lista de sentencias SHOW GRANTS para cada usuario del sistema. Aquí tienes un ejemplo del resultado:
+--------------------------------------------------+
| CONCAT('SHOW GRANTS FOR \'', user, '\'@\'', host |
+--------------------------------------------------+
| SHOW GRANTS FOR 'root'@'localhost'; |
| SHOW GRANTS FOR 'john'@'localhost'; |
| SHOW GRANTS FOR 'admin'@'192.168.1.10'; |
+--------------------------------------------------+
Después puedes ejecutar la consulta SHOW GRANTS para ver los privilegios de un usuario específico.
Mostrar los permisos del usuario actual
Para mostrar los permisos del usuario conectado actualmente a la base de datos, puedes usar la función CURRENT_USER():
SHOW GRANTS FOR CURRENT_USER();
Resultado esperado:
+---------------------------------------------------------+
| Grants for current user |
+---------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO `root`@`localhost` |
+---------------------------------------------------------+
Este comando es especialmente útil para usuarios que no están seguros de cuáles son sus propios permisos.
Cómo interpretar el resultado
- GRANT USAGE: indica que el usuario no tiene privilegios globales, pero podría tener privilegios específicos en algunas bases de datos.
- ALL PRIVILEGES: otorga todos los privilegios sobre una base de datos o de forma global, excepto GRANT OPTION.
- GRANT OPTION: permite que un usuario otorgue privilegios a otros.
Permisos específicos de base de datos: permisos como SELECT, INSERT, UPDATE y DELETE pueden otorgarse para una base de datos o tabla en particular.
Entendiendo los GRANTS de MySQL
MySQL ofrece la sentencia GRANT, que permite a los administradores otorgar privilegios a los usuarios.
También existe la sentencia inversa REVOKE para revocar privilegios.
Sin embargo, antes de cambiar permisos, necesitamos saber qué permisos hay actualmente, y aquí es donde entra el comando SHOW GRANTS.
El comando SHOW GRANTS muestra la sentencia GRANT que habría que ejecutar para duplicar los privilegios de un usuario.
Este comando es compatible con los motores de bases de datos MySQL y MariaDB.
Conclusión
En resumen, el comando SHOW GRANTS de MySQL se usa para mostrar los privilegios de los usuarios. Es una herramienta importante para que los administradores de bases de datos auditen y gestionen los permisos de los usuarios.
Otros artículos que te pueden gustar:
Beekeeper Studio es una GUI para MySQL gratuita y de código abierto
Últimamente he usado Beekeeper Studio para mi trabajo con MySQL y rápidamente se convirtió en una de mis herramientas de bases de datos favoritas. La interfaz es limpia, moderna y sin distracciones, así que es fácil concentrarte en las consultas sin el desorden que tienen otras herramientas. - Surendra Singh
Beekeeper Studio es un cliente de MySQL rápido, intuitivo y fácil de usar. También es compatible con muchísimas otras bases de datos y funciona de maravilla en Windows, Mac y Linux.
Lo que dicen los usuarios de MySQL sobre Beekeeper Studio
Elegí este programa después de años de usar phpMyAdmin; se siente como entrar a un mundo de mayor calidad. Aquí de verdad sentí que se preocupan por el usuario. El concepto en sí, la implementación, la experiencia práctica: le estoy sinceramente agradecido a Matthew por todo.
Herramienta fabulosa, el IDE más práctico que he encontrado hasta ahora para administrar bases de datos Postgres y MySql. Simplemente funciona, sin complicaciones :-)