Введение
Есть команды для отображения баз данных и таблиц, но нет команды show users
MySQL.
В этом руководстве объясняется, как составить список всех учетных записей пользователей на сервере базы данных MySQL с помощью командной строки. Мы также покажем вам, как узнать, какие пользователи имеют доступ к конкретной базе данных.
До начала
Мы предполагаем, что в вашей системе уже установлен сервер MySQL или MariaDB.
Все команды выполняются в оболочке MySQL от имени пользователя root. Чтобы получить доступ к оболочке MySQL, введите следующую команду и введите пароль пользователя root MySQL при появлении запроса:
mysql -u root -p
Если вы не установили пароль для корневого пользователя MySQL, вы можете опустить параметр -p
.
Если вы забыли свой root-пароль MySQL, вы можете сбросить его, следуя этим инструкциям.
Показать всех пользователей MySQL
MySQL хранит информацию о пользователе в таблице с именем user
в базе данных mysql
.
Чтобы получить список всех учетных записей пользователей MySQL, используйте SELECT
для извлечения всех строк из таблицы mysql.users
:
SELECT User, Host FROM mysql.user;
Вывод должен выглядеть так:
+------------------+-----------+
| user | host |
+------------------+-----------+
| root | localhost |
| user1 | % |
| user2 | % |
| user3 | 10.10.0.6 |
| user4 | 10.10.0.9 |
| user5 | localhost |
| user6 | localhost |
| user7 | 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 |
| user1 | % | *ADC3B5B27617732CD6320A2DA976258E149A7EC8 | N |
| user2 | % | *9550E004046348198A143A115550E1262209FB6F | N |
| user3 | 10.10.0.6 | *F91C86B486B945C083B61A05FF6E197560D187EC | Y |
| user4 | 10.10.0.9 | | Y |
| user5 | localhost | *17F2B1E48029294841AD66772BEBB7E6E6A005AF | N |
| user6 | localhost | *74409C8DB55AC1A6829D801915981C46EDBFC64A | N |
| user7 | localhost | *7B3022FCAEC3534CE67C68322D8AF0C240D95745 | N |
+----------------+-----------+-------------------------------------------+------------------+
8 rows in set (0.00 sec)
Показать пользователей, у которых есть доступ к определенной базе данных
Информация о привилегиях уровня базы данных хранится в таблице mysql.db
.
Вы можете запросить таблицу, чтобы узнать, какие пользователи имеют доступ к конкретной базе данных и уровень привилегий.
Например, чтобы получить список всех пользователей с уровнем доступа к базе данных db_name
, используйте следующий запрос:
SELECT * FROM mysql.db WHERE Db = 'db_name'\G;
*************************** 1. row ***************************
Host: localhost
Db: db_name
User: db_user
Select_priv: Y
Insert_priv: Y
Update_priv: Y
Delete_priv: Y
Create_priv: Y
Drop_priv: Y
Grant_priv: N
References_priv: Y
Index_priv: Y
Alter_priv: Y
Create_tmp_table_priv: Y
Lock_tables_priv: Y
Create_view_priv: Y
Show_view_priv: Y
Create_routine_priv: Y
Alter_routine_priv: Y
Execute_priv: Y
Event_priv: Y
Trigger_priv: Y
1 row in set (0.00 sec)
Для получения информации только об учетных записях пользователей, имеющих доступ к определенной базе данных, без просмотра привилегий используйте:
SELECT db, host, user FROM mysql.db WHERE db = 'db_name'
+---------+-----------+---------+
| db | host | user |
+---------+-----------+---------+
| db_name | localhost | db_user |
+---------+-----------+---------+
Следующий запрос покажет вам информацию обо всех базах данных и связанных пользователях:
SELECT db, host, user FROM mysql.db WHERE db = 'db_name'
+------------------+-----------+-----------+
| db | host | user |
+------------------+-----------+-----------+
| db_name | localhost | db_user |
| wordpress | localhost | user1 |
| magento | localhost | user2 |
| noviello | localhost | user3 |
+------------------+-----------+-----------+
Вывод
В этом руководстве мы показали, как получить список всех пользователей MySQL и выяснить, какие пользователи имеют доступ к определенной базе данных.