usuarios - Cómo obtener una lista de cuentas de usuario de MySQL
ver privilegios usuario mysql (14)
Estoy usando la utilidad de línea de comandos 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 MySQL versión 5.4.1
.
Aquí se muestra la lista de usuarios únicos.
SELECT DISTINCT User FROM mysql.user;
Considero que este formato es el más útil, ya que incluye el campo host, que es importante en MySQL para distinguir entre los registros de usuario.
select User,Host from mysql.user;
Encontré este uno 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;
Inicie sesión en mysql como root y escriba la siguiente consulta
select User from mysql.user;
+------+
| User |
+------+
| amon |
| root |
| root |
+------+
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 mostraba permisos para un usuario cuando obviamente podía conectarse y seleccionar, etc.
mysql> select * from mysql.db;
mysql> select * from db;
+---------------+-----------------+--------+-------------+-------------+-------------+--------
| Host | Db | User | Select_priv | Insert_priv | Update_priv | Del...
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 se encuentra en una tabla, un conjunto de datos, user
designado. 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 |
| | % |
+------------------+-----------+
Para evitar repeticiones de usuarios cuando se conectan desde diferentes orígenes:
select distinct User from mysql.user;
Peter y Jesse están en lo correcto, pero asegúrese de seleccionar primero el DB mysql.
use mysql;
select User from mysql.user;
eso debería hacer tu truco
Si te refieres a los usuarios reales de MySQL, prueba:
select User from mysql.user;
Una cuenta de usuario comprende el nombre de usuario y el acceso de nivel de host.
Por lo tanto, esta es la consulta que da todas las cuentas de usuario
SELECT CONCAT(QUOTE(user),''@'',QUOTE(host)) UserAccount FROM mysql.user;
Uso esto para ordenar a 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;
Utilice esta consulta:
SELECT User FROM mysql.user;
Lo que dará como resultado una tabla como esta:
+-------+
| User |
+-------+
| root |
+-------+
| user2 |
+-------+
Como Matthew Scharley señala en los comentarios sobre esta respuesta , puede agrupar por la columna de User
si solo desea ver nombres de usuario únicos.
$> 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, imprimirá a todos los usuarios de la base de datos en el archivo de texto.
SELECT * FROM mysql.user;
Es una tabla grande, por lo que es posible que desee ser más selectivo en los campos que elija.