Aprender a enumerar permisos en MySQL es esencial para garantizar la seguridad y el control de acceso en bases de datos. Este artículo describe los comandos clave para listar permisos y usuarios, así como cómo acceder a privilegios específicos y funciones definidas.
MySQL ofrece el comando SHOW GRANTS
para mostrar los permisos asignados:
-- Mostrar los permisos del usuario actual
SHOW GRANTS;
-- Mostrar los permisos de un usuario específico
SHOW GRANTS FOR 'usuario'@'host';
-- Ejemplo: permisos para root en localhost
SHOW GRANTS FOR 'root'@'localhost';
-- Permisos del usuario activo en la sesión actual
SHOW GRANTS FOR CURRENT_USER();
MySQL almacena información sobre usuarios y permisos en la tabla mysql.user
. Puedes usar estas consultas para obtener detalles:
-- Obtener todos los usuarios, permisos y hashes
SELECT * FROM mysql.user;
-- Consultar datos específicos de un usuario
SELECT * FROM mysql.user WHERE user = 'root';
-- Listar usuarios con privilegio de archivo
SELECT user, file_priv FROM mysql.user WHERE file_priv = 'Y';
-- Listar usuarios con privilegio de superusuario
SELECT user, Super_priv FROM mysql.user WHERE Super_priv = 'Y';
Las funciones definidas por el usuario también pueden gestionarse para evaluar su seguridad:
-- Listar todas las funciones
SELECT routine_name FROM information_schema.routines WHERE routine_type = 'FUNCTION';
-- Excluir funciones del esquema 'sys'
SELECT routine_name
FROM information_schema.routines
WHERE routine_type = 'FUNCTION' AND routine_schema != 'sys';
SHOW GRANTS FOR 'root'@'localhost';
SELECT user FROM mysql.user WHERE file_priv = 'Y';
SELECT routine_name
FROM information_schema.routines
WHERE routine_type = 'FUNCTION' AND routine_schema != 'sys';
Jorge García
Fullstack developer