Как получить список учетных записей пользователей MySQL

Я использую утилиту командной строки MySQL и могу перемещаться по базе данных. Теперь мне нужно увидеть список учетных записей пользователей. Как я могу это сделать?

Я использую версию MySQL5.4.1.

Ответы на вопрос(15)

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

Выполнение этой команды в приглашении linux сначала запросит пароль пользователя root mysql, при предоставлении правильного пароля он распечатает всех пользователей базы данных в текстовый файл.

Я нашел его еще одним полезным, поскольку он предоставляет дополнительную информацию о привилегиях DML и DDL

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

Это отображает список уникальных пользователей:

SELECT DISTINCT User FROM mysql.user;

Я считаю этот формат наиболее полезным, поскольку он включает в себя поле хоста, которое важно в MySQL для различения записей пользователя.

select User,Host from mysql.user;
 25 апр. 2016 г., 08:15
@ Пакерhost вступает в игру при подключении с другого сервера. Можно предоставить разный доступ к'packer'@'example.com' а также'packer'@'google.com'
 12 мар. 2016 г., 15:36
Просто любопытно. Когда будет этоhost вступать в игру при работе с базами данных mysql? [Mysql Noob]

Войдите в MySQL как root и введите следующий запрос

select User from mysql.user;

+------+
| User |
+------+
| amon |
| root |
| root |
+------+
 26 мар. 2014 г., 10:16
Вам нужно дать привилегии user1 для отображения списка пользователей. Без пользователя root вы получите ошибку. Поэтому сначала предоставьте привилегии. Войдите в систему как пользователь root и введите командуGRANT SELECT ON mysql.user TO 'user1'@'localhost';   Теперь войдите как user1 и введите командуselect User from mysql.user;  Вы увидите список пользователей. :) +1 Наслаждайтесь
 25 мар. 2014 г., 23:27
Я бы сказал +1 за упоминание входа в систему как root. Я пытался, не делая этого, и это не сработало;)

Я использую это для сортировки пользователей, поэтому разрешенные хосты легче обнаружить:

mysql> SELECT User,Host FROM mysql.user ORDER BY User,Host;
Решение Вопроса

Используйте этот запрос:

SELECT User FROM mysql.user;

Который выведет таблицу следующим образом:

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

Как Мэтью Шарлиуказывает в комментариях к этому ответуВы можете сгруппировать поUser столбец, если вы хотите видеть только уникальные имена пользователей.

 28 апр. 2015 г., 10:13
@ДжеффриSHOW GRANTS FOR 'user'@'host';
 25 янв. 2016 г., 17:46
вместо группировки вы можете просто использоватьDISTINCT ключевое слово:SELECT DISTINCT user FROM mysql.user;
 21 окт. 2013 г., 14:20
Как найти ту же информацию без запроса SQL ??
 04 мая 2014 г., 13:43
@barrycarterDELETE FROM mysql.user; лучше иметьWHERE user='someuser' and host='somehost'; Если вы делаетеDELETE FROM mysql.user;все пользователи ушли. Логины после следующего перезапуска MySQL илиFLUSH PRIVILEGES; исключить пользователей из памяти. Вот пример одного из моих постов о выполненииDELETE FROM mysql.user ответственно:dba.stackexchange.com/questions/4614/…
 16 июл. 2009 г., 06:22
Я думаю, что может быть необходимо сгруппироватьUser Кроме того, чтобы получить только уникальные пользовательские значения, так как есть отдельная строка для каждогоuser@host запись.

чтобы избежать повторений пользователей при подключении из разных источников:

select distinct User from mysql.user;

MySQL хранит информацию о пользователях в своей собственной базе данных. Название базы данныхMySQL, Внутри этой базы данных пользовательская информация находится в таблице, наборе данных с именемuser, Если вы хотите увидеть, какие пользователи настроены в пользовательской таблице MySQL, выполните следующую команду:

SELECT User, Host FROM mysql.user;

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

Таблица mysql.db, возможно, важнее при определении прав пользователя. Я думаю, что запись в нем создается, если вы упомянули таблицу в команде GRANT. В моем случае таблица mysql.users не показала никаких полномочий для пользователя, когда он, очевидно, мог подключаться и выбирать и т. Д.

mysql> select * from mysql.db;
mysql> select * from db;
+---------------+-----------------+--------+-------------+-------------+-------------+--------
| Host          | Db              | User   | Select_priv | Insert_priv | Update_priv | Del...
 05 апр. 2015 г., 21:09
На мой взгляд, важно то, что пользователям разрешено делать в базе данных. Так что «ПОКАЗАТЬ ГРАНТЫ» Это очень полезно, поскольку показывает, кому разрешено делать.

Учетная запись пользователя содержит имя пользователя и доступ на уровне хоста.

Таким образом, это запрос, который дает все учетные записи пользователей

SELECT CONCAT(QUOTE(user),'@',QUOTE(host)) UserAccount FROM mysql.user;
 22 мая 2015 г., 12:30
Лучший ответ, на что могут жаловаться скептики. Единственное, что я изменил, добавлялORDER BY user к этому.
 14 окт. 2013 г., 23:21
Один пример:[email protected] Формат используется для установки паролей. Опуская хозяина изSET PASSWORD Команда выдает ошибку.SET PASSWORD FOR wordpressuser = PASSWORD('...'); выдает ошибкуERROR 1133 (42000): Can't find any matching row in the user table, Включите хост, и он работает.SET PASSWORD FOR [email protected] = PASSWORD('...'); производитQuery OK, 0 rows affected (0.00 sec).
 14 окт. 2013 г., 23:00
Это в основном так же, какspkane's answer, В чем преимущество объединения столбцов пользователя и хоста?

Если вы имеете в виду реальных пользователей MySQL, попробуйте:

select User from mysql.user;
SELECT * FROM mysql.user;

Это большая таблица, так что вы можете быть более разборчивы в выборе полей.

 21 мар. 2015 г., 14:52
Если вы не хотите, чтобы люди подключались через сеть, старый стандарт заключался в том, чтобы удалить все из них. Тем не менее, в настоящее время, похоже, рекомендуется сохранять локальные хосты, так как они все равно недоступны по сети; это означает, что вы должны вместоkeep все они.
 28 янв. 2015 г., 13:03
У меня есть 3 пользователя root с разных хостов.localhost, 127.0.0.1 а также::1, Какой из них я должен сохранить и что я должен удалить? Спасибо!
SELECT User FROM mysql.user;

используйте запрос выше, чтобы получить пользователей Mysql

Питер и Джесси правы, но сначала убедитесь, что вы выбрали БД mysql.

use mysql;

select User from mysql.user;

это должно сделать ваш трюк

 26 мар. 2013 г., 20:45
Это не обязательноuse mysql; в случае, если вы поместите таблицу в базу данных MySQL, как вы сделали. Вы можете простоselect User from mysql.user;
 13 февр. 2016 г., 05:36
послеuse mysql если бы вы использовалиselect user from user; чем это могло бы быть что-то, но вместо этого вы используетеmysql.user, что делает использованиеuse mysql в начале ненужно.
 24 окт. 2013 г., 13:25
Добавлениеuse mysql; просто так вы можете использоватьselect User from user; вместоselect User from mysql.user; так как обычно это однократный запрос, нет необходимости использовать mysql db

Ваш ответ на вопрос