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

Вам когда-нибудь нужно было получить список всех пользователей на вашем сервере MySQL? Есть команды для отображения баз данных и таблиц, но нет команды MySQL show users .

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

Подготовка

Мы предполагаем, что в вашей системе уже установлен сервер MySQL или MariaDB.

Все команды выполняются внутри оболочки MySQL от имени пользователя root. Чтобы получить доступ к оболочке MySQL, введите следующую команду и при появлении запроса введите пароль root-пользователя MySQL:

mysql -u root -p

Если вы не установили пароль для своего пользователя root MySQL, вы можете опустить опцию -p .

Если вы забыли свой пароль root для MySQL, вы можете сбросить его, следуя этим инструкциям .

Показать всех пользователей MySQL

MySQL хранит информацию о пользователях в таблице с именем user в базе данных mysql .

Чтобы получить список всех учетных записей пользователей MySQL, используйте SELECT для извлечения всех строк из таблицы mysql.users :

SELECT User, Host FROM mysql.user;

Результат должен выглядеть примерно так:

+------------------+-----------+
| user             | host      |
+------------------+-----------+
| root             | localhost |
| luke             | %         |
| yoda             | %         |
| jabba            | 10.10.0.6 |
| jabba            | 10.10.0.9 |
| chewbacca        | localhost |
| leia             | localhost |
| han              | 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           | %         | *ADC3B5B27617732CD6320A2DA976258E149A7EC8 | N                |
| yoda           | %         | *9550E004046348198A143A115550E1262209FB6F | N                |
| jabba          | 10.10.0.6 | *F91C86B486B945C083B61A05FF6E197560D187EC | Y                |
| jabba          | 10.10.0.9 |                                           | Y                |
| chewbacca      | localhost | *17F2B1E48029294841AD66772BEBB7E6E6A005AF | N                |
| leia           | localhost | *74409C8DB55AC1A6829D801915981C46EDBFC64A | N                |
| han            | 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;
+------------------+-----------+-----------+
| db               | host      | user      |
+------------------+-----------+-----------+
| db_name          | localhost | db_user   |
| ghost_production | localhost | chewbacca |
| blog_db          | localhost | leia      |
| linuxize         | localhost | han       |
+------------------+-----------+-----------+

Выводы

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

Не стесняйтесь оставлять комментарии, если у вас есть вопросы.

Оставьте комментарий