Cómo mostrar /listar usuarios en MySQL en Linux

27 feb 2021 3 min di lettura
Cómo mostrar /listar usuarios en MySQL en Linux
Indice dei contenuti

Introducción

Hay comandos para mostrar bases de datos y tablas, pero no hay un show users MySQL.

Este tutorial explica cómo listar todas las cuentas de usuario en un servidor de base de datos MySQL a través de la línea de comandos. También le mostraremos cómo averiguar qué usuarios tienen acceso a una base de datos en particular.

Antes de empezar

Suponemos que un servidor MySQL o MariaDB ya está instalado en su sistema.

Todos los comandos se ejecutan dentro del shell de MySQL como usuario root. Para acceder al shell de MySQL, escriba el siguiente comando e ingrese la contraseña del usuario raíz de MySQL cuando se le solicite:

mysql -u root -p

Si no ha establecido una contraseña para su usuario root de MySQL, puede omitir la opción -p

Si ha olvidado su contraseña de root de MySQL, puede restablecerla siguiendo estas instrucciones.

Mostrar todos los usuarios de MySQL

MySQL almacena la información del usuario en una tabla denominada user en la base de datos mysql

Para obtener una lista de todas las cuentas de usuario de MySQL, use la SELECT para recuperar todas las filas de la tabla mysql.users

SELECT User, Host FROM mysql.user;

La salida debería verse así:

+------------------+-----------+
 | user | host |
 +------------------+-----------+
 | root | localhost |
 | user1 | % |
 | user2 | % |
 | user3 | 10.10.0.6 |
 | user4 | 10.10.0.9 |
 | user5 | localhost |
 | user6 | localhost |
 | user7 | localhost |
 +------------------+-----------+
 8 rows in set (0.00 sec)

El comando anterior solo muestra dos columnas de la tabla mysql.user User y Host ). Esta tabla contiene más de 40 columnas como Password, Select_priv, Update_priv, etc.

Una cuenta de usuario en MySQL consta de dos partes: un nombre de usuario y un nombre de host.

Utilice la desc mysql.user; para ver información sobre las columnas de la tabla. Una vez que sepa el nombre de la columna, puede consultar los datos seleccionados.

Por ejemplo, para obtener una lista de todas las cuentas de usuario de MySQL, incluida la información de la contraseña y si está activa o caducada, utilice la siguiente consulta:

SELECT User, Host, Password, password_expired FROM mysql.user;
+----------------+-----------+-------------------------------------------+------------------+
 | User | Host | Password | password_expired |
 +----------------+-----------+-------------------------------------------+------------------+
 | root | localhost | | N |
 | user1 | % | *ADC3B5B27617732CD6320A2DA976258E149A7EC8 | N |
 | user2 | % | *9550E004046348198A143A115550E1262209FB6F | N |
 | user3 | 10.10.0.6 | *F91C86B486B945C083B61A05FF6E197560D187EC | Y |
 | user4 | 10.10.0.9 | | Y |
 | user5 | localhost | *17F2B1E48029294841AD66772BEBB7E6E6A005AF | N |
 | user6 | localhost | *74409C8DB55AC1A6829D801915981C46EDBFC64A | N |
 | user7 | localhost | *7B3022FCAEC3534CE67C68322D8AF0C240D95745 | N |
 +----------------+-----------+-------------------------------------------+------------------+
 8 rows in set (0.00 sec)

Mostrar usuarios que tienen acceso a una base de datos en particular

La información sobre los privilegios a nivel de base de datos se almacena en la tabla mysql.db

Puede consultar la tabla para averiguar qué usuarios tienen acceso a una base de datos en particular y el nivel de privilegios.

Por ejemplo, para obtener una lista de todos los usuarios que tienen un nivel de acceso a la base de datos llamado db_name utilice la siguiente consulta:

SELECT * FROM mysql.db WHERE Db = 'db_name'\G;
*************************** 1. row ***************************
 Host: localhost
 Db: db_name
 User: db_user
 Select_priv: Y
 Insert_priv: Y
 Update_priv: Y
 Delete_priv: Y
 Create_priv: Y
 Drop_priv: Y
 Grant_priv: N
 References_priv: Y
 Index_priv: Y
 Alter_priv: Y
 Create_tmp_table_priv: Y
 Lock_tables_priv: Y
 Create_view_priv: Y
 Show_view_priv: Y
 Create_routine_priv: Y
 Alter_routine_priv: Y
 Execute_priv: Y
 Event_priv: Y
 Trigger_priv: Y
 1 row in set (0.00 sec)

Para recuperar información solo sobre cuentas de usuario que tienen acceso a una base de datos en particular, sin privilegios de visualización, use:

SELECT db, host, user FROM mysql.db WHERE db = 'db_name'
+---------+-----------+---------+
 | db | host | user |
 +---------+-----------+---------+
 | db_name | localhost | db_user |
 +---------+-----------+---------+

La siguiente consulta le mostrará información sobre todas las bases de datos y usuarios asociados:

SELECT db, host, user FROM mysql.db WHERE db = 'db_name'
+------------------+-----------+-----------+
 | db | host | user |
 +------------------+-----------+-----------+
 | db_name | localhost | db_user |
 | wordpress | localhost | user1 |
 | magento | localhost | user2 |
 | noviello | localhost | user3 |
 +------------------+-----------+-----------+

Conclusión

En este tutorial, hemos mostrado cómo obtener una lista de todos los usuarios de MySQL y averiguar qué usuarios tienen acceso a una base de datos en particular.

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.