¿Cómo obtener una lista de cuentas de usuario usando la línea de comando en MySQL?

Estoy usando la utilidad de línea de comandos de MySQL y puedo navegar a través de una base de datos. Ahora necesito ver una lista de cuentas de usuario. ¿Cómo puedo hacer esto?

Estoy usando la versión de MySQL 5.4.1.

preguntado el 16 de julio de 09 a las 00:07

@Mustapha ¿Por qué cambia el título? Estas respuestas aquí son SQL que puede ejecutar desde cualquier lugar, no solo una línea de comando. ¿Y qué agrega esa etiqueta a la pregunta? -

El propósito de mi edición era mantener la coherencia entre el título y la descripción, pero creo que tiene un buen punto. Haga su edición Sr. @Rup -

15 Respuestas

Utilice esta consulta:

SELECT User FROM mysql.user;

Lo que generará una tabla como esta:

+-------+
| User  |
+-------+
| root  |
+-------+
| user2 |
+-------+

Como Matthew Scharley señala en los comentarios sobre esta respuesta, puede agrupar por User columna si solo desea ver nombres de usuario únicos.

contestado el 23 de mayo de 17 a las 13:05

Creo que puede ser necesario agrupar en User también, para obtener solo valores de usuario únicos, ya que hay una fila separada para cada user@host entrada. - Mateo Scharley

¿Cómo encontrar la misma información sin consulta SQL? - Divyanshu Das

@barrycarter DELETE FROM mysql.user; mejor tener WHERE user='someuser' and host='somehost'; Si lo hace DELETE FROM mysql.user;, todos los usuarios se han ido. Inicios de sesión después del próximo reinicio de mysql o FLUSH PRIVILEGES; eliminar usuarios de la memoria. Aquí hay un ejemplo de una de mis publicaciones sobre cómo hacer DELETE FROM mysql.user responsablemente: dba.stackexchange.com/questions/4614/… - RolandoMySQLDBA

@Geoffrey SHOW GRANTS FOR 'user'@'host'; - pantalones de lujo

en lugar de agrupar, puede usar DISTINCT palabra clave: SELECT DISTINCT user FROM mysql.user; - user2683246

Encuentro que este formato es el más útil, ya que incluye el campo de host que es importante en MySQL para distinguir entre registros de usuario.

select User,Host from mysql.user;

Respondido 06 Jul 12, 19:07

Sólo curioso. Cuando sera esto host entran en juego cuando se trabaja con bases de datos mysql? [Mysql Noob] - Prabhakar Undurti

@Packer el host entra en juego cuando se conecta desde un servidor diferente. Es posible otorgar diferentes accesos a 'packer'@'example.com' y 'packer'@'google.com' - ray baxter

Una cuenta de usuario comprende el nombre de usuario y el acceso a nivel de host.

Por tanto, esta es la consulta que le da a todas las cuentas de usuario

SELECT CONCAT(QUOTE(user),'@',QUOTE(host)) UserAccount FROM mysql.user;

Respondido el 29 de Septiembre de 13 a las 23:09

Esto es básicamente lo mismo que la respuesta de spkane. ¿Cuál es el beneficio de concatenar las columnas de usuario y de host? - Iain Samuel McLean Anciano

Un ejemplo: el user@host El formato se utiliza para establecer contraseñas. Omitir el anfitrión de la SET PASSWORD El comando produce un error. SET PASSWORD FOR wordpressuser = PASSWORD('...'); produce el error ERROR 1133 (42000): Can't find any matching row in the user table. Incluya el anfitrión y funciona. SET PASSWORD FOR wordpressuser@localhost = PASSWORD('...'); produce Query OK, 0 rows affected (0.00 sec). - Iain Samuel McLean Anciano

La mejor respuesta, sea lo que sea de lo que se quejen los detractores. Lo único que cambiaría sería agregar un ORDER BY user lo. - sjas

para evitar repeticiones de usuarios cuando se conectan desde diferente origen:

select distinct User from mysql.user;

Respondido el 29 de Septiembre de 13 a las 23:09

MySQL almacena la información del usuario en su propia base de datos. El nombre de la base de datos es MySQL. Dentro de esa base de datos, la información del usuario está en una tabla, un conjunto de datos, llamado user. Si desea ver qué usuarios están configurados en la tabla de usuarios de MySQL, ejecute el siguiente comando:

SELECT User, Host FROM mysql.user;

+------------------+-----------+
| User             | Host      |
+------------------+-----------+
| root             | localhost |
| root             | demohost  |
| root             | 127.0.0.1 |
| debian-sys-maint | localhost |
|                  | %         |
+------------------+-----------+

respondido 27 nov., 17:04

Si se refiere a los usuarios reales de MySQL, intente:

select User from mysql.user;

Respondido 16 Jul 09, 04:07

SELECT * FROM mysql.user;

Es una tabla grande, por lo que es posible que desee ser más selectivo en los campos que elija.

Respondido 16 Jul 09, 04:07

Tengo 3 usuarios raíz con diferentes hosts. localhost, 127.0.0.1 y ::1. ¿Cuál debo conservar y qué debo eliminar? ¡Gracias! - emotalidad

Si no desea que las personas se conecten a través de la red, el antiguo estándar era eliminarlos todos. Hoy en día, sin embargo, parece que la recomendación es mantener los de host local, ya que de todos modos no son accesibles a través de la red; esto significa que en su lugar deberías guardar todos ellos. - trisis

Inicie sesión en mysql como root y escriba la siguiente consulta

select User from mysql.user;

+------+
| User |
+------+
| amon |
| root |
| root |
+------+

respondido 04 mar '14, 06:03

Diría +1 por mencionar el inicio de sesión como root. Intenté sin hacerlo y no funcionó;) - Leenephi

Debe otorgar privilegios al usuario1 para mostrar la lista de usuarios. Sin el usuario root obtendrá un error. Así que primero proporcione los privilegios. Inicie sesión como usuario root y luego escriba el comando GRANT SELECT ON mysql.user TO 'user1'@'localhost'; ahora inicie sesión como usuario1 y escriba el comando select User from mysql.user; Verá que se muestra la lista de usuarios. :) +1 Disfruta - Sandip Divekar

La tabla mysql.db es posiblemente más importante para determinar los derechos de los usuarios. Creo que se crea una entrada si menciona una tabla en el comando GRANT. En mi caso, la tabla mysql.users no mostró permisos para un usuario cuando obviamente pudo conectarse y seleccionar, etc.

mysql> select * from mysql.db;
mysql> select * from db;
+---------------+-----------------+--------+-------------+-------------+-------------+--------
| Host          | Db              | User   | Select_priv | Insert_priv | Update_priv | Del...

Respondido 22 ago 15, 09:08

En mi opinión, lo importante es lo que los usuarios pueden hacer en la base de datos. Entonces, "MOSTRAR SUBVENCIONES" es bastante útil ya que muestra quién tiene permitido hacer qué. - Desarrollador Marius Žilėnas

Utilizo esto para ordenar los usuarios, por lo que los hosts permitidos son más fáciles de detectar:

mysql> SELECT User,Host FROM mysql.user ORDER BY User,Host;

respondido 02 nov., 16:19

Esto muestra la lista de usuarios únicos:

SELECT DISTINCT User FROM mysql.user;

respondido 16 nov., 18:07

Peter y Jesse tienen razón, pero asegúrese de seleccionar primero la base de datos mysql.

use mysql;
select User from mysql.user;

eso debería hacer tu truco

Respondido el 30 de Septiembre de 20 a las 16:09

No es necesario use mysql; en caso de que amplíe la tabla a la base de datos mysql como lo hizo. Tu puedes sólo select User from mysql.user; - vitaLee

Adición use mysql; es solo para que puedas usar select User from user; select User from mysql.user; dado que generalmente es una consulta de una sola vez, no es necesario usar la base de datos mysql - Dan

después de use mysql si hubieras usado select user from user; de lo que podría haber sido algo, pero en su lugar estás usando mysql.user, lo que hace que usar use mysql al principio innecesario. - Sнаđошƒаӽ

$>  mysql -u root -p -e 'Select user from mysql.user' > allUsersOnDatabase.txt

Al ejecutar este comando en el indicador de Linux, primero se solicitará la contraseña del usuario root de mysql, al proporcionar la contraseña correcta, se imprimirán todos los usuarios de la base de datos en el archivo de texto.

respondido 02 mar '18, 21:03

Encontré el suyo más útil, ya que proporciona información adicional sobre los privilegios DML y DDL.

SELECT user, Select_priv, Insert_priv , Update_priv, Delete_priv, 
       Create_priv, Drop_priv, Shutdown_priv, Create_user_priv 
FROM mysql.user;

Respondido el 14 de diciembre de 17 a las 16:12

SELECT User FROM mysql.user;

use la consulta anterior para obtener usuarios de Mysql

Respondido 15 Feb 19, 05:02

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.