Cómo listar y gestionar usuarios MySQL: mostrar usuarios, privilegios, crear y corregir errores

1. Introducción

Administrar usuarios en MySQL es una tarea esencial para mantener la seguridad de la base de datos y garantizar operaciones eficientes. Al comprender qué usuarios pueden acceder a la base de datos y qué privilegios poseen, puedes aplicar un control de acceso adecuado y reforzar la seguridad global.

Este artículo explica cómo mostrar una lista de usuarios de MySQL, obtener información detallada de los usuarios, crear y gestionar usuarios, y resolver errores comunes. Al final, comprenderás tanto los fundamentos como los procedimientos prácticos de la gestión de usuarios en MySQL.

2. Cómo obtener una lista de usuarios

Para obtener una lista de usuarios en MySQL, se utiliza la tabla mysql.user. Esta tabla almacena información sobre todos los usuarios registrados en MySQL, y puedes mostrar la información necesaria mediante comandos simples.

Método básico para mostrar la lista de usuarios

Primero, inicia sesión en MySQL y ejecuta el siguiente comando:

SELECT Host, User FROM mysql.user;

Este comando muestra una lista con el Host y el nombre User de cada usuario. Por ejemplo, pueden aparecer nombres de host como «localhost» o «127.0.0.1». Estos suelen representar conexiones locales (IPv4 o IPv6). Esta configuración se observa con frecuencia en la gestión de usuarios en entornos locales.

Recuperar toda la información de los usuarios

Si necesitas información más detallada, puedes mostrar todas las columnas de la tabla mysql.user con el siguiente comando:

SELECT * FROM mysql.user;

Este comando muestra información detallada de cada usuario (como datos de autenticación y configuraciones de privilegios). Sin embargo, suele ser más fácil de leer cuando se especifican solo las columnas requeridas. Aunque el comando anterior brinda información completa, seleccionar columnas específicas a menudo produce una salida más organizada y legible.

3. Recuperar información detallada de los usuarios

En MySQL también puedes obtener los hashes de contraseñas y la información de privilegios de los usuarios, lo que hace la gestión de usuarios más eficiente.

Cómo mostrar los hashes de contraseñas

En MySQL, las contraseñas se encriptan y almacenan como hashes en la columna authentication_string. Utiliza el siguiente comando para verificar el nombre del host, el nombre de usuario y el hash de la contraseña:

SELECT Host, User, authentication_string FROM mysql.user;

Esto te permite comprobar si una contraseña está establecida para cada usuario. Aunque se muestra el valor hash, no puede descifrarse, lo que mantiene la seguridad. Este método es especialmente útil al verificar usuarios recién creados o al revisar asignaciones de privilegios.

Verificar privilegios de un usuario específico

Para comprobar qué privilegios tiene un usuario sobre bases de datos o tablas, usa el comando SHOW GRANTS:

SHOW GRANTS FOR 'username'@'hostname';

Este comando muestra todos los privilegios concedidos al usuario especificado. Resulta particularmente útil para los administradores de bases de datos al determinar o revisar los permisos asignados.

4. Creación y gestión de usuarios

Esta sección presenta cómo crear nuevos usuarios en MySQL y cómo configurar o modificar sus privilegios.

Crear un nuevo usuario

Para crear un nuevo usuario, utiliza la sentencia CREATE USER. El siguiente ejemplo crea un usuario llamado example_user con la contraseña password123:

CREATE USER 'example_user'@'localhost' IDENTIFIED BY 'password123';

Después de crear un usuario, debes ejecutar FLUSH PRIVILEGES para aplicar los cambios en MySQL:

FLUSH PRIVILEGES;

Notas importantes al eliminar un usuario

Para eliminar un usuario innecesario, usa el comando DROP USER. Sin embargo, antes de borrar un usuario, es importante revisar los privilegios relacionados y el posible impacto en los datos. Por ejemplo, si el usuario que se elimina está vinculado a otros sistemas o servicios, eliminar la cuenta podría provocar fallos de acceso. Siempre procede con precaución.

5. Errores comunes y sus soluciones

Pueden producirse errores durante la gestión de usuarios en MySQL. A continuación, se presentan algunos errores frecuentes y cómo resolverlos.

Error de permiso: «Access denied»

El error «Access denied» ocurre cuando un usuario no tiene los privilegios apropiados para una base de datos o tabla. En este caso, un administrador puede resolver el problema otorgando los privilegios requeridos usando el siguiente comando:

GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'hostname';
FLUSH PRIVILEGES;

Error de autenticación de usuario: «Unknown user»

El error «Unknown user» ocurre cuando el usuario especificado no existe. Si encuentra este error, verifique que el nombre de usuario y el nombre de host estén especificados correctamente, y confirme que el usuario exista en la tabla mysql.user.

Errores relacionados con la contraseña

Si experimenta discrepancias de contraseña o errores de autenticación, puede resolver el problema restableciendo la contraseña. Utilice el siguiente comando para actualizar la contraseña:

ALTER USER 'username'@'hostname' IDENTIFIED BY 'new_password';

6. Conclusión

Este artículo explicó cómo obtener una lista de usuarios de MySQL, verificar información detallada, crear y administrar usuarios, y resolver errores comunes. Una gestión adecuada de los usuarios contribuye directamente a fortalecer la seguridad de la base de datos. Revisar regularmente las cuentas de usuario y los privilegios ayuda a reducir el riesgo de acceso no autorizado.

Utilice estos métodos para operar MySQL de forma segura y eficiente.