Как получить список учетных записей пользователей с помощью командной строки в MySQL?

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

Я использую версию MySQL 5.4.1.

16.07.2009 03:23:53
@Mustapha Почему название меняется? Эти ответы здесь - SQL, который вы можете запустить из любого места, а не только из командной строки. И что этот тег добавляет к вопросу?
Rup 14.05.2019 09:13:56
Цель моего редактирования состояла в том, чтобы сохранить согласованность между заголовком и описанием, но я думаю, у вас есть хорошая точка зрения. Сделайте правку Мистер @Rup
Mustapha Hadid 14.05.2019 13:11:01
15 ОТВЕТОВ
РЕШЕНИЕ

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

SELECT User FROM mysql.user;

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

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

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

1845
23.05.2017 12:34:51
Я думаю, что может потребоваться группировка User, чтобы получить только уникальные пользовательские значения, поскольку для каждой записи user@ существует отдельная строка host.
Matthew Scharley 16.07.2009 04:22:39
Как найти ту же информацию без запроса SQL ??
Divyanshu Das 21.10.2013 12:20:26
@barrycarter DELETE 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/…
RolandoMySQLDBA 4.05.2014 11:43:12
@GeoffreySHOW GRANTS FOR 'user'@'host';
fancyPants 28.04.2015 08:13:18
вместо группировки вы можете просто использовать DISTINCTключевое слово:SELECT DISTINCT user FROM mysql.user;
user2683246 25.01.2016 16:46:02

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

select User from mysql.user;
30
16.07.2009 03:28:16
SELECT * FROM mysql.user;

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

23
16.07.2009 03:29:24
У меня есть 3 пользователя root с разных хостов. localhost, 127.0.0.1И ::1. Какой из них я должен сохранить и что я должен удалить? Спасибо!
emotality 28.01.2015 12:03:14
Если вы не хотите, чтобы люди подключались через сеть, старый стандарт заключался в том, чтобы удалить все это. Тем не менее, в настоящее время, похоже, рекомендуется сохранять локальные хосты, так как они все равно недоступны по сети; это означает, что вы должны вместо этого сохранить все из них.
trysis 21.03.2015 13:52:47

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

use mysql;

select User from mysql.user;

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

11
5.05.2012 12:19:39
Это не обязательно use mysql;в случае, если вы поместите таблицу в базу данных mysql, как вы это сделали. Вы можете простоselect User from mysql.user;
vitaLee 26.03.2013 19:45:30
Добавление use mysql;просто так, что вы можете использовать select User from user;вместо этого, select User from mysql.user;так как это, как правило, однократный запрос, нет необходимости использовать mysql db
Dan 24.10.2013 11:25:40
после use mysqlтого, как вы использовали, select user from user;чем это могло бы быть чем-то, но вместо этого вы используете mysql.user, что делает использование use mysqlв начале ненужным.
Sнаđошƒаӽ 13.02.2016 04:36:08

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

select User,Host from mysql.user;
445
6.07.2012 18:21:58
Просто любопытно. Когда это hostвступит в силу при работе с базами данных mysql? [Mysql Noob]
Prabhakar Undurthi 12.03.2016 14:36:32
@Packer hostвступает в игру, когда вы подключаетесь с другого сервера. Можно предоставить различный доступ к 'packer'@'example.com'и'packer'@'google.com'
Ray Baxter 25.04.2016 06:15:11

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

select distinct User from mysql.user;
48
29.09.2013 22:01:52

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

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

SELECT CONCAT(QUOTE(user),'@',QUOTE(host)) UserAccount FROM mysql.user;
117
29.09.2013 22:29:11
Это в основном то же самое, что и ответ Спканэ . В чем преимущество объединения столбцов пользователя и хоста?
Iain Samuel McLean Elder 14.10.2013 21:00:09
Один пример: user@hostформат используется для установки паролей. Пропуск хоста из SET PASSWORDкоманды приводит к ошибке. SET PASSWORD FOR wordpressuser = PASSWORD('...');выдает ошибку ERROR 1133 (42000): Can't find any matching row in the user table. Включите хост, и он работает. SET PASSWORD FOR wordpressuser@localhost = PASSWORD('...');производит Query OK, 0 rows affected (0.00 sec).
Iain Samuel McLean Elder 14.10.2013 21:21:46
Лучший ответ, на что могут жаловаться скептики. Единственное, что я хотел бы изменить, это добавить ORDER BY userк нему.
sjas 22.05.2015 10:30:39

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

select User from mysql.user;

+------+
| User |
+------+
| amon |
| root |
| root |
+------+
18
4.03.2014 06:46:24
Я бы сказал +1 за упоминание входа в систему как root. Я пытался без этого, и это не сработало;)
leenephi 25.03.2014 22:27:41
Вам нужно дать привилегии user1 для отображения списка пользователей. Без пользователя root вы получите ошибку. Поэтому сначала предоставьте привилегии. Войдите в систему как пользователь root, затем введите команду GRANT SELECT ON mysql.user TO 'user1'@'localhost'; now, войдите как user1 и введите команду. select User from mysql.user; Вы увидите список пользователей. :) +1 Наслаждайтесь
sandip divekar 26.03.2014 09:16:21

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

mysql> select * from mysql.db;
mysql> select * from db;
+---------------+-----------------+--------+-------------+-------------+-------------+--------
| Host          | Db              | User   | Select_priv | Insert_priv | Update_priv | Del...
15
22.08.2015 08:37:16
На мой взгляд, важно то, что пользователям разрешено делать в базе данных. Таким образом, «SHOW GRANTS» весьма полезен, поскольку показывает, кому и как разрешено делать.
Developer Marius Žilėnas 5.04.2015 19:09:20

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

SELECT DISTINCT User FROM mysql.user;
10
16.11.2018 07:25:17

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 |
|                  | %         |
+------------------+-----------+
31
27.11.2017 04:31:47

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

mysql> SELECT User,Host FROM mysql.user ORDER BY User,Host;
12
2.11.2016 19:01:33
$>  mysql -u root -p -e 'Select user from mysql.user' > allUsersOnDatabase.txt

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

5
2.03.2018 21:39:30

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

SELECT user, Select_priv, Insert_priv , Update_priv, Delete_priv, 
       Create_priv, Drop_priv, Shutdown_priv, Create_user_priv 
FROM mysql.user;
3
14.12.2017 16:54:32
SELECT User FROM mysql.user;

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

0
15.02.2019 05:19:11