Вы когда-нибудь хотели получить список всех пользователей на вашем сервере MySQL? Есть команды для отображения баз данных и таблиц, но нет команды в MySQL “показать пользователей”.
Эта статья объясняет, как перечислить все учетные записи пользователей на сервере базы данных MySQL через командную строку.
Прежде чем вы начнете эту статью, мы предполагаем, что у вас уже есть MySQL или сервер MariaDB, установленный в вашей системе. Если нет, вы можете легко установить его, следуя одному из руководств ниже:
Все команды будут выполнены внутри оболочки MySQL как пользователь root.
Чтобы получить доступ к оболочке MySQL, введите следующую команду и введите пароль пользователя root MySQL при запросе:
mysql -u root -p
Если вы еще не установили пароль для пользователя root в MySQL можно опустить переключатель -p
.
Если вы забыли ваш MySQL пароль root, вы можете сбросить его, следуя этой инструкции.
MySQL хранит информацию о пользователях, в таблице с именем user
в базе данных mysql
. Чтобы получить список всех учетных записей пользователей в MySQL, можно использовать заявление SELECT
и извлечь все строки из таблицы mysql.users
:
SELECT User, Host FROM mysql.user;
Вывод должен выглядеть примерно так:
+------------------+-----------+
| user | host |
+------------------+-----------+
| root | localhost |
| luke | % |
| yoda | % |
| alex | 10.10.0.6 |
| alex | 10.10.0.9 |
| andeyex | localhost |
| anton | localhost |
| sniper | localhost |
+------------------+-----------+
8 rows in set (0.00 sec)
Команда выше показывает только две колонки из таблицы mysql.user
(User
и Host
), в этой таблице содержится более 40 столбцов, таких как Password
, Select_priv
, Update_priv
… и т. д.
Учетная запись пользователя в MySQL состоит из имени пользователя и имени хоста.
Вы можете использовать оператор desc mysql.user;
для отображения информации о каждом столбце таблицы. Как только вы узнаете имя столбца, запустите запрос по выбранным данным.
Например, чтобы получить список всех учетных записей пользователей MySQL, включая информацию о пароле и о том, активен он или истек, вы можете использовать следующий запрос:
SELECT User, Host, Password, password_expired FROM mysql.user;
+----------------+-----------+-------------------------------------------+------------------+
| User | Host | Password | password_expired |
+----------------+-----------+-------------------------------------------+------------------+
| root | localhost | | N |
| luke | % | *AKFG85M09GH96LG058AKHUYOLN76258E149A7EC8 | N |
| yoda | % | *9550E004046348198A143A115550E1262209FB6F | N |
| alex | 10.10.0.6 | *F91C86B486B945C083BKJJF85JF94J75KHD187EC | Y |
| alex | 10.10.0.9 | | Y |
| andreyex | localhost | *17F2B1E480292KGFG587DJFR85U7JG9FFCA005AF | N |
| anton | localhost | *74409C8DB596J6JG86J7GKT9G76JY9H6EDBFC64A | N |
| sniper | localhost | *7B3022FCAECKFI6897J9H96J6IG850KYOHD95745 | N |
+----------------+-----------+-------------------------------------------+------------------+
8 rows in set (0.00 sec)
В этой статье мы показали вам, как получить список всех учетных записей пользователей MySQL, извлекая данные из пользовательской таблицы в базе данных mysql.
Не стесняйтесь оставить комментарий, если у вас есть какие-либо вопросы.
Есть ли возможность через базу данных выбрать конкретную группу пользователей сайта, объединенных одним общим пунктом? Например, датой регистрации или городом. Борюсь с проблемой ботов, которые спамят и засоряют сайт. Если да, то по каким параметрам можно группировать зарегистрированных пользователей? Заранее спасибо!