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

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

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

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

Прежде чем начать

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

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

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

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

mysql mariadb

Связанные руководства

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *