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 la versión MySQL 5.4.1
.
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 la versión MySQL 5.4.1
.
Respuestas:
Use 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.
User
para obtener valores de usuario únicos, ya que hay una fila separada para cada entrada user
@ host
.
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. Inicia sesión después del siguiente reinicio de mysql o FLUSH PRIVILEGES;
elimina usuarios de la memoria. Aquí hay un ejemplo de una de mis publicaciones sobre cómo hacer de manera DELETE FROM mysql.user
responsable: dba.stackexchange.com/questions/4614/…
SHOW GRANTS FOR 'user'@'host';
DISTINCT
palabra clave: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 registros de usuario.
select User,Host from mysql.user;
host
en juego cuando trabaje con bases de datos mysql? [Mysql Noob]
host
entra en juego cuando te conectas desde un servidor diferente. Es posible otorgar acceso diferente a 'packer'@'example.com'
y'packer'@'google.com'
Una cuenta de usuario comprende el nombre de usuario y el acceso a 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;
user@host
formato se usa para configurar contraseñas. Omitir el host del SET PASSWORD
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 host y funciona. SET PASSWORD FOR wordpressuser@localhost = PASSWORD('...');
produce Query OK, 0 rows affected (0.00 sec)
.
ORDER BY user
.
para evitar repeticiones de usuarios cuando se conectan desde un origen diferente:
select distinct User from mysql.user;
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 |
| | % |
+------------------+-----------+
Si se refiere a los usuarios reales de MySQL, intente:
select User from mysql.user;
SELECT * FROM mysql.user;
Es una tabla grande, por lo que es posible que desee ser más selectivo en los campos que elija.
localhost
, 127.0.0.1
Y ::1
. ¿Cuál debo conservar y qué debo eliminar? ¡Gracias!
Inicie sesión en mysql como root y escriba la siguiente consulta
select User from mysql.user;
+------+
| User |
+------+
| amon |
| root |
| root |
+------+
GRANT SELECT ON mysql.user TO 'user1'@'localhost';
ahora inicie sesión como user1 y escriba command select User from mysql.user;
Verá la lista de usuarios mostrada. :) +1 Disfruta
La tabla mysql.db es posiblemente más importante para determinar los derechos del usuario. 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...
Lo uso 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;
Peter y Jesse están en lo correcto, pero solo asegúrese de seleccionar primero la base de datos mysql.
use mysql;
select User from mysql.user;
eso debería hacer tu truco
use mysql;
en caso de que alcance la tabla a la base de datos mysql como lo hizo. Puedes simplementeselect User from mysql.user;
use mysql;
es sólo para que pueda utilizar select User from user;
en su lugar select User from mysql.user;
, ya que es por lo general una consulta una vez, no hay necesidad de usar la base de datos mysql
use mysql
si lo hubiera usado, select user from user;
podría haber sido algo, pero en su lugar lo está usando mysql.user
, lo que hace que el uso use mysql
al principio sea innecesario.
Esto muestra la lista de usuarios únicos:
SELECT DISTINCT User FROM mysql.user;
$> mysql -u root -p -e 'Select user from mysql.user' > allUsersOnDatabase.txt
Ejecutar este comando en el indicador de Linux primero pedirá la contraseña del usuario root de mysql, al proporcionar la contraseña correcta imprimirá todos los usuarios de la base de datos en el archivo de texto.
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;
SELECT User FROM mysql.user;
use la consulta anterior para obtener usuarios de Mysql