MySQL es a menudo la primera opción para desarrolladores y aquellos interesados en probar un lenguaje de consulta estructurado. Incluye numerosas características que lo hacen confiable, seguro y eficiente. Sin embargo, existen algunas formas de mejorar aún más la seguridad del servidor MySQL. Una de ellas es crear usuarios de base de datos con acceso restringido.

Este artículo explicará por qué deberías crear cuentas de usuario MySQL separadas y cómo utilizar consultas MySQL para obtener una lista completa de usuarios en un servidor de base de datos dado. A diferencia de lo que muchos podrían pensar o buscar, el comando SHOW USERS no existe en MySQL, pero te mostraremos las alternativas efectivas.

Por qué Crear Usuarios en el Servidor MySQL
Cada vez que los usuarios o administradores de bases de datos instalan MySQL, el primer usuario que se crea es el usuario root, el administrador de MySQL. El usuario root tiene permiso para hacer todo en la base de datos MySQL.
Si bien tener todos los permisos puede parecer beneficioso, hacerlo conlleva sus propios fallos de seguridad, y compartir el usuario root entre varias personas es peligroso. Los hackers a menudo intentan iniciar sesión como usuario root para robar la información alojada o incluso destruir todo el servidor MySQL junto con sus datos.
Por lo tanto, los administradores de sistemas crean usuarios con permisos específicos en algunas bases de datos. En otras palabras, si las credenciales de una cuenta se ven comprometidas, el impacto será mínimo y manejable. Esto subraya la importancia de una correcta gestión de usuarios para la seguridad.
Cómo Mostrar Usuarios en la Base de Datos MySQL en Linux
Como mencionamos, a diferencia de los comandos SHOW DATABASES o SHOW TABLES que muestran todas las bases de datos o tablas de inmediato, el comando SHOW USERS no existe en MySQL. Aunque no hay tal comando, los usuarios pueden usar una consulta MySQL para obtener una lista completa de usuarios en un servidor de base de datos dado.
Sigue los pasos a continuación para obtener más información.
1. Inicia Sesión como Usuario Root de MySQL
Comienza iniciando sesión en tu VPS a través de SSH como usuario root. Una vez hecho esto, ingresa a la línea de comandos de MySQL con este comando:
sudo mysql -u root -pLuego, ingresa tu contraseña de root de MySQL.
¡Importante! Ten en cuenta que las contraseñas de root del sistema y de MySQL son separadas y pueden ser diferentes.
Una vez que estés en la consola de MySQL como usuario root, podrás ejecutar consultas para mostrar otros usuarios de MySQL.
2. Utiliza la Consulta para Mostrar Usuarios de MySQL
Para mostrar los usuarios de MySQL creados en el servidor de base de datos, utiliza la siguiente consulta:
SELECT user FROM mysql.user;Como resultado, verás la lista de todos los usuarios que se han creado en MySQL.
Ten en cuenta que puede haber usuarios duplicados. Esto se debe a que MySQL filtra el acceso a un servidor según la dirección IP desde la que proviene. Un mismo nombre de usuario puede existir para diferentes hosts (por ejemplo, 'usuario'@'localhost' y 'usuario'@'%').
También puedes agregar una columna de host para ver aún más información utilizando el siguiente comando:
SELECT user, host FROM mysql.user;Con esto, podrás ver los usuarios de MySQL y a qué host o dirección IP tienen permiso para acceder. En muchos casos, verás usuarios asociados a 'localhost' o a direcciones IP específicas o al comodín '%' (que significa cualquier host).
Ver Más Información del Usuario MySQL (Opcional)
Si necesitas más información sobre los usuarios de MySQL, la búsqueda se puede ampliar con la ayuda de consultas MySQL más específicas. La información detallada de los usuarios se almacena en la tabla user dentro de la base de datos del sistema llamada mysql.
Por ejemplo, el siguiente comando imprimirá toda la información posible de la tabla de usuarios:
SELECT * FROM mysql.user;Sin embargo, dicha salida puede parecer demasiado desordenada para entenderla fácilmente. Por lo tanto, recomendamos limitar la búsqueda utilizando consultas más específicas.
Aquí hay algunos de los casos de uso más populares:
Previsualizar Columnas de la Tabla
La siguiente consulta mostrará una vista previa de las columnas de la tabla de usuarios. Es especialmente útil si los usuarios quieren verificar información sobre una tabla específica sin ver todos los datos:
DESC mysql.user;Esto te dará la estructura de la tabla, incluyendo los nombres de las columnas y sus tipos de datos.
Mostrar Solo Nombres de Usuario Únicos
Para omitir nombres de usuario repetidos (que pueden aparecer si un usuario tiene acceso desde múltiples hosts), se puede utilizar la siguiente consulta:
SELECT DISTINCT user FROM mysql.user;Esta consulta agrupará los resultados y mostrará cada nombre de usuario solo una vez, independientemente de cuántas entradas tengan en la tabla mysql.user debido a diferentes hosts.
Estado de Expiración de Contraseña y Bloqueo de Cuenta
Para verificar el estado de expiración de la contraseña y el estado de bloqueo de la cuenta, utiliza esta consulta:
SELECT user, account_locked, password_expired FROM mysql.user;Estas columnas son importantes para la seguridad y el mantenimiento, permitiéndote identificar cuentas bloqueadas o contraseñas que necesitan ser actualizadas.
Mostrar Usuario Actual y Usuarios Logueados Actualmente
El usuario actual con el que estás conectado puede mostrarse con la siguiente consulta:
SELECT current_user();Si necesitas más información sobre quiénes están actualmente conectados al servidor MySQL y qué están haciendo, puedes modificar la consulta para mostrar los usuarios actualmente logueados con sus estados. Este comando es beneficioso para encontrar usuarios inactivos que consumen demasiados recursos o para diagnosticar problemas de conexión:
SELECT user, host, command FROM information_schema.processlist;Esta consulta accede a la tabla processlist dentro de la base de datos del sistema information_schema, que contiene metadatos sobre el servidor.
Conclusión
La administración de un servidor de base de datos puede ser un trabajo desafiante. Por lo tanto, los administradores de bases de datos deben ser cuidadosos al crear y administrar los permisos de usuario. Aunque no existe el comando directo SHOW USERS, hemos visto que la tabla mysql.user es la clave para obtener toda la información sobre los usuarios del sistema.
Dominar las consultas sobre la tabla mysql.user permite a los administradores visualizar los usuarios de MySQL junto con otra información importante, lo que es fundamental para mantener la seguridad y el buen funcionamiento del servidor.
Para recapitular, hemos cubierto los conceptos básicos de cómo mostrar usuarios de MySQL vinculados a una base de datos y aprendimos cómo:
- Listar todos los usuarios creados en una base de datos MySQL dada.
- Previsualizar las columnas de la tabla de usuarios de MySQL.
- Mostrar solo los nombres de usuario únicos en una tabla.
- Verificar el estado de expiración de la contraseña y el estado de bloqueo de la cuenta.
- Mostrar el usuario actual y los usuarios actualmente logueados en una base de datos MySQL.
Esperamos que este tutorial te haya sido útil y aclare cómo obtener la lista de usuarios en MySQL utilizando las consultas adecuadas sobre la tabla del sistema.
Preguntas Frecuentes (FAQ)
¿Cómo puedo ver todos los usuarios y contraseñas de MySQL?
Puedes hacer la siguiente consulta SQL:
SELECT user, password, host FROM mysql.user;Esta consulta muestra una lista de usuarios, sus nombres de usuario, contraseñas (en formato hash si usas versiones modernas de MySQL) y el host de la base de datos. Es importante notar que en versiones recientes de MySQL, la columna password no contiene la contraseña en texto plano, sino un hash, por razones de seguridad.
¿Cómo muestro usuarios en MySQL/MariaDB?
Inicia sesión en tu servidor MariaDB/MySQL con el cliente mysql como usuario root. Escribe la siguiente consulta:
mysql -u root -pO especificando el host:
mysql -u root -h localhost -pUna vez dentro de la consola MySQL/MariaDB, utiliza la consulta estándar:
SELECT user, host FROM mysql.user;El proceso es prácticamente idéntico en ambos sistemas, ya que MariaDB es un fork de MySQL y mantiene gran compatibilidad.
¿Dónde se almacenan los usuarios en MySQL?
MySQL almacena la información de los usuarios en la tabla user dentro de la base de datos del sistema llamada mysql.
Si quieres conocer otros artículos parecidos a Listar Usuarios en MySQL: Guía Completa puedes visitar la categoría MySQL.

Aprende mas sobre MySQL