Как отобразить/перечислить пользователей в MySQL в Linux

12 set 2022 2 min di lettura
Как отобразить/перечислить пользователей в MySQL в Linux
Indice dei contenuti

Введение

Есть команды для отображения баз данных и таблиц, но нет команды 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 и выяснить, какие пользователи имеют доступ к определенной базе данных.

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.