Как Посмотреть Список Пользователей MySQL БД в Linux

MySQL — один из самых популярных менеджеров баз данных в мире. Он имеет множество функций, которые делают его надёжным и эффективным. Однако, как и любая другая программа, максимально эффективен он только при правильном использовании.
Простой и проверенный способ повысить защиту MySQL — создать пользователей с ограниченными правами доступа к базе данных. В этом руководстве вы узнаете, как в MySQL посмотреть список пользователей и их привилегии, а также более эффективно управлять базами данных в терминальной среде Linux на вашем VPS.
Зачем Создавать Пользователей в MySQL?
При установке MySQL первым создаётся пользователь root, или администратор MySQL. Пользователь с правами root имеет полный доступ к базе данных MySQL, а поэтому вряд ли вы захотите, чтобы у всех пользователей были такие же привилегии.
С другой стороны, хакеры всегда пытаются проникнуть в систему как пользователь root, чтобы украсть информацию, которая там хранится. Или, что ещё хуже, уничтожить сервис и все данные вместе с ним.
Имея это ввиду, системный администратор должен создавать пользователей с определёнными разрешениями для отдельных баз данных, а следовательно для отдельных таблиц. При этом, если безопасность этого пользователя будет поставлена под угрозу, ущерб будет минимальным.
Как Посмотреть Список Пользователей MySQL в Linux
Здесь вы узнаете самый простой способ:
Войдите через SSH
Во-первых, вам необходимо подключиться к вашему серверу, используя SSH. У нас есть руководство с подробным описанием этого процесса!
ssh vash-user@vash-server
Убедитесь, что у вас есть права root
Как только у нас будет доступ к нашему серверу, мы должны войти в консоль MySQL. Для этого нам нужны root-права. Введите в командную строку следующее:
sudo mysql -u root -p
Введите свой пароль администратора (root) MySQL
Затем нам нужно будет ввести пароль root для MySQL. Он должен отличаться от системного пароля root.
Мы сможем запускать предложения и команды, как только зайдём в консоль MySQL.
MySQL список пользователей
Теперь мы можем вывести список пользователей, созданных в MySQL, с помощью следующей команды:
mysql> SELECT user FROM mysql.user;
В результате мы сможем посмотреть всех пользователей, которые были созданы в MySQL.
Добавьте столбец хоста (необязательно)
В списке могут быть повторяющиеся пользователи. Это связано с тем, что MySQL фильтрует доступ к серверу в соответствии с IP-адресом, с которого он выполняется. Таким образом, вы также можете добавить столбец хоста.
Mysql> SELECT user,host FROM mysql.user;
Благодаря этому мы сможем посмотреть пользователей MySQL, а также с какого хоста или IP-адреса они имеют разрешение на доступ.
Итоги
Администрирование сервера базы данных не всегда простая задача. Поэтому мы должны быть осторожны с созданием и управлением разрешениями юзеров. Теперь вы знаете, как вывести список пользователей MySQL, привязанных к базе данных.
Также вы всегда можете обратиться к официальной документации MySQL для дополнительной информации о разрешениях и создании пользователей.
Ольга вже близько восьми років працює менеджером у сфері IT, три з яких вона займається SEO. Написання технічних завдань та інструкцій — один з її основних обов’язків. Її хобі — дізнаватися щось нове і створювати цікаві та корисні статті про сучасні технології, веброзробку, мови програмування, пошукову оптимізацію сайтів та багато іншого.
КАК ПОСМОТРЕТЬ СПИСОК ПОЛЬЗОВАТЕЛЕЙ БАЗЫ MYSQL И MARIADB

В сегодняшней статье мы поговорим о том как можно отобразить всех пользователей в базе данных Mysql. Кстати в MariaDB эти команды тоже подойдут которые я вам буду показывать.
Как мы все знаем, что основная функция любой базы данных это конечно хранить какую-то информацию в таблицах в структурированном виде. Доступ к этой информации мы получаем посредством авторизации в базу данных, и только потом мы можем запросить какую-то информацию из неё. Рано или поздно подходит тот момент когда мы создали очень много пользователей и нам необходимо пересмотреть их всех. Все пользователи в Mysql хранятся в системной базе данных mysql в таблице user.
Я вам покажу несколько простых запросов которые покажут вам ценную информацию о пользователях и помогут предотвратить возможные проблемы.
Если мы хотим смотреть пользователей через консоль в Linux, то нам нужно подключится к консоли Mysql командой:

Авторизоваться в базу данных мы будем из под учетной записи root, она является самой главной в базе данных Mysql. После введения команды дальше вас попросит ввести пароль от учетной записи root, если вы пароль укажите правильно то СУБД вас пропустит, а иначе получите ошибку авторизации.
Самым первым запросом мы просто запросим всех пользователей выполнивши запрос до системной базы данных mysql и в ней таблица user.
mysql> SELECT user FROM mysql.user;

Поле user в результате указывает на то как называется имя пользователя в базе данных.
Этим запросом мы просто смотрим какие у нас есть пользователи в базе данных. Пользователей mysql.infoschema, mysql.session, mysql.sys и root нам сама СУБД создает при её первоначальной установки, и по этому я вам крайне не рекомендую с ними что-нибудь делать.
Но если у нас пользователей слишком много, а мы хотим узнать их количество, то мы можем воспользоваться специальной функцией COUNT(), которая нам посчитает всех пользователей.
mysql> SELECT COUNT(user) FROM mysql.user;

Как видим в результате у нас в данный момент находится в базе данных Mysql всего 4 пользователя.
Если кто не знает, то в базе данных Mysql существуют не просто пользователи, а есть как локальные пользователи, так и внешние. Чтобы нам узнать какой пользователь локальный, а какой внешний то нам нужно выполнить тот же запрос, но еще добавить в выборку дополнительное поле по имени host.
mysql> SELECT user, host FROM mysql.user;

Знак процента % означает что пользователь у нас является внешним, а значения localhost означает что пользователь локальный. Разница между локальным и внешним большая.
Вот к примеру у нас сейчас есть пользователь root. Мы под этим пользователем подключились к базе данных через консоль на самом сервере, где у нас установлена сама СУБД. Я допустим захочу подключиться к базе данных под этим же пользователем, но из своего ноутбука, то база данных мне этого сделать не даст так как root у нас локальный.
А от если я буду авторизоваться в базу данных из своего ноутбука, и использовать учетную запись it-inzhener, то база данных меня пропустит, потому что мы явно указали что у нас эта учетная запись является внешней. А от если я буду подключаться к базе данных через консоль на самом сервере где у нас установлена СУБД Mysql, то база данных меня не пропустит потому что подключатся к базе данных локально могут только локальные пользователи.
Вот и вся разница хоть и не большая, но может создать много проблем с доступом до базы данных.
Следующим примером допустим мы хотим узнать какие у нас пользователи заблокированные, а какие нет, для этого нам нужно выполнить тот же запрос, но еще добавить в выборку дополнительный параметр account_locked.
mysql> SELECT user, account_locked FROM mysql.user;

Как видим в результате у нас появились какие-то Y и N. Так от значения N как раз и означает что пользователь является не заблокированный, а Y заблокированный, это значит что если возле учетной записи стоит N то пользователи сможет зайти в базу данных, а тот у кого стоит Y не сможет.
К примеру у нас в базе данных 1000 пользователей и подсчитывать сколько заблокированных, а сколько нет то это очень сложно и неудобно. Для такой цели мы можем наших пользователей сгруппировать с помощью дополнительной команды GROUP BY.
mysql> SELECT account_locked, COUNT(user) FROM mysql.user GROUP BY account_locked;

В результате мы видим, что у нас 4 пользователя сейчас заблокированы и они не смогут пройти авторизацию в базу данных. А два пользователя у нас активны и они смогут зайти в базу данных.
Следующим простым примером мы можем посмотреть под каким пользователем мы сейчас авторизированны в базе данных.
mysql> SELECT user();

mysql> SELECT current_user();

В обоих вариантах база данных нам говорим что мы сейчас авторизированны из под учетной записи root.
В следующем примере мы можем посмотреть какие пользователи в данный момент авторизированны в базе данных. Этот обеспечивает нам важную информацию при мониторинге нашей базы данных Mysql на предмет несанкционированного доступа. Такая информация хранится в системной базе данных information_schema в таблице processlist.
mysql> SELECT user, host,db, command FROM information_schema.processlist;

- user — Имя пользователя.
- host — Локальный пользователь или внешний.
- db — Имя базы данных к которой пользователь подключился.
- command — SQL запрос который пользователь выполняет в данный момент.
В итоге коллеги пользуя команды которые представлены в статье вы теперь можете легко структурировать информацию о пользователях.
Всем спасибо, я надеюсь что вам моя статья хоть чем-то помогла.
Последнее обновление: 20 Июня 2023 г.
Как показать / составить список пользователей в 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 и узнать, какие пользователи имеют доступ к конкретной базе данных.
Не стесняйтесь оставлять комментарии, если у вас есть вопросы.
Как посмотреть всех пользователей и привилегии в MySQL

Иногда нужно посмотреть всех пользователей, которых вы завели в MySQL и узнать их привилегии каждого из них.
Первым делом логинимся с учетной записью root в MySQL.
#mysql -uroot -p
Затем выбираем системную базу данных MySQL:
mysql>use mysql;
Далее выбираем все имена пользователей, которые у нас существуют:
mysql>select user from user;
В ответ на команду будут выведены все пользователи MySQL.
Для того, чтобы узнать привилегии пользователя в MySQL, используя консоль, выполняем:
mysql>show grants for %username%;
где вместо %username% подставляем нужное нам имя пользователя и получаем привилегии данного пользователя.
Список описанных опций можно найти в документации.
Похожие статьи на сайте
- Шпаргалка основных команд mysql по работе с базой данных и таблицам
- Настройка удаленного доступа MySQL и MariaDB в Linux Ubuntu
- Процесс создания базы MySQL, нового пользователя и загрузки дампа
- Как посмотреть всех пользователей и привилегии в MySQL
- Проверка, восстановление и оптимизация баз MySQL
- Установка Nginx, MariaDB и PHP-FPM на Ubuntu 16.04
- Как полностью удалить MySQL из Ubuntu
- Удаление всех таблиц из базы MySQL
- Установка сервера percona
- Установка Nginx+php5-fpm+MariaDB на Ubuntu 14.04
- Дампы баз данных MySql — mysqldump
- Перенос баз данных MySQL
- Защита phpMyAdmin