Guía completa de usuarios MySQL: listado, permisos y seguridad

1. Importancia y objetivo de la gestión de usuarios en MySQL

La «gestión de usuarios» en MySQL es un proceso crucial que influye significativamente en la seguridad y la eficiencia de la administración de la base de datos. En entornos con muchos usuarios accediendo, es necesario configurar los permisos de manera precisa y prevenir accesos no autorizados. En este artículo se explica paso a paso cómo obtener la lista de usuarios de MySQL, cómo verificar sus permisos y cómo abordar errores. En particular, la gestión de usuarios y la configuración de derechos de acceso cubren contenido útil tanto para principiantes como para usuarios intermedios.

2. Cómo verificar la lista de usuarios en MySQL

En MySQL, la información de los usuarios se almacena en la tabla mysql.user. Al acceder a esta tabla, se pueden ver todos los usuarios registrados.

2.1 Mostrar usuarios y host

Primero, para obtener una lista básica de nombres de usuario y nombres de host, use el siguiente comando.
SELECT User, Host FROM mysql.user;
Este comando muestra una lista de cada usuario y su host de origen. Por ejemplo, los usuarios especificados con localhost solo pueden acceder desde la máquina local. El control de los nombres de host mejora la seguridad, por lo que también es importante prestar atención a la configuración del host de origen.

2.2 Obtener información detallada del usuario

Si necesita información más completa, puede obtener detalles del usuario con el siguiente comando.
SELECT * FROM mysql.user;
Este comando muestra el nombre de usuario, el host, el hash de la contraseña y varias configuraciones. Sin embargo, dado que la cantidad de datos puede ser grande, a veces es más eficiente limitar la consulta a columnas específicas. Según sea necesario, puede filtrar columnas como User para restringir la información del usuario objetivo.

3. Cómo verificar los permisos de los usuarios de MySQL

Puedes comprobar qué permisos de operación tiene un usuario en la base de datos con el comando SHOW GRANTS. Esta acción es un paso importante para gestionar los permisos de forma detallada por usuario.

3.1 Pasos para verificar los permisos

Para comprobar los permisos asignados a un usuario específico, usa el siguiente comando.
SHOW GRANTS FOR 'username'@'host';
Por ejemplo, si deseas verificar los permisos del usuario main@localhost, ejecuta lo siguiente.
SHOW GRANTS FOR 'main'@'localhost';
El resultado mostrará a qué bases de datos puede acceder el usuario especificado y si puede realizar operaciones como lectura, escritura o creación de tablas. Si necesitas cambiar los permisos con frecuencia, una gestión adecuada de los mismos garantiza la seguridad de los datos.

4. Verificación del hash de la contraseña y su importancia

En MySQL, la contraseña del usuario se cifra y se almacena en la columna authentication_string. Esta hashificación refuerza la seguridad al evitar que la contraseña sea visible directamente. Con el siguiente comando, puede obtener el hash de la contraseña de cada usuario.
SELECT User, Host, authentication_string FROM mysql.user;

4.1 Obtener el hash de la contraseña de un usuario específico

Si solo desea verificar el hash de un usuario específico, filtre con la cláusula WHERE.
SELECT User, Host, authentication_string FROM mysql.user WHERE User='example_user';
Dado que está cifrada, no se puede obtener la contraseña en sí, pero se puede comprobar si está configurada. Si es necesario restablecer la contraseña, lo habitual es establecer una nueva contraseña y actualizar los privilegios.

5. Método para verificar la configuración al crear usuarios

En MySQL, se pueden realizar configuraciones detalladas al crear usuarios, pero si desea verificar la configuración de un usuario existente, el comando SHOW CREATE USER es útil.
SHOW CREATE USER 'username'@'host';
Este comando muestra configuraciones relacionadas con la seguridad, como la fecha de expiración de la contraseña, el estado de bloqueo de la cuenta y las restricciones de origen de conexión. En particular, la expiración de la contraseña y el estado de bloqueo de la cuenta son importantes como medidas de seguridad. Si es necesario, también es recomendable considerar la revisión de la política de cuentas.

6. Cómo eliminar usuarios y consideraciones

En MySQL, eliminar usuarios innecesarios permite restringir el acceso a la base de datos. Al eliminar un usuario, considere cuidadosamente el impacto en la base de datos y ejecute el comando DROP USER.
DROP USER 'username'@'host';
Después de eliminar un usuario, ejecute el siguiente comando para actualizar la caché relacionada con los privilegios de acceso.
FLUSH PRIVILEGES;
Después de eliminar usuarios, es importante revisar los permisos de acceso y verificar que no haya eliminaciones erróneas de usuarios o deficiencias en el control de acceso.

7. Errores comunes y sus soluciones

Al gestionar usuarios en MySQL, pueden ocurrir varios errores. Aquí se explican los errores más representativos y sus métodos de solución.

7.1 Cómo abordar los errores de permisos

Si al intentar realizar una operación específica el usuario recibe un error de «Access denied», es posible que le falten los permisos necesarios. En ese caso, se pueden conceder los permisos requeridos usando el comando GRANT como se muestra a continuación.
GRANT ALL PRIVILEGES ON database.* TO 'username'@'host';
Después de la operación, no olvide ejecutar el comando FLUSH PRIVILEGES para aplicar los cambios de permisos.

7.2 Otros códigos de error

Conocer los códigos de error más comunes y sus causas permite responder rápidamente. Por ejemplo, el error 1045 - Access denied es típico cuando el nombre de usuario o la contraseña son incorrectos. En tal caso, verifique la información de autenticación y vuelva a intentarlo.