Перейти к содержимому

Как посмотреть пользователей в mysql

  • автор:

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

Как Посмотреть Список Пользователей 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. Кстати в MariaDB эти команды тоже подойдут которые я вам буду показывать.

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

Я вам покажу несколько простых запросов которые покажут вам ценную информацию о пользователях и помогут предотвратить возможные проблемы.

Если мы хотим смотреть пользователей через консоль в Linux, то нам нужно подключится к консоли Mysql командой:

mysql users

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

Самым первым запросом мы просто запросим всех пользователей выполнивши запрос до системной базы данных mysql и в ней таблица user.

mysql> SELECT user FROM mysql.user;

mysql users

Поле user в результате указывает на то как называется имя пользователя в базе данных.

Этим запросом мы просто смотрим какие у нас есть пользователи в базе данных. Пользователей mysql.infoschema, mysql.session, mysql.sys и root нам сама СУБД создает при её первоначальной установки, и по этому я вам крайне не рекомендую с ними что-нибудь делать.

Но если у нас пользователей слишком много, а мы хотим узнать их количество, то мы можем воспользоваться специальной функцией COUNT(), которая нам посчитает всех пользователей.

mysql> SELECT COUNT(user) FROM mysql.user;

mysql users

Как видим в результате у нас в данный момент находится в базе данных Mysql всего 4 пользователя.

Если кто не знает, то в базе данных Mysql существуют не просто пользователи, а есть как локальные пользователи, так и внешние. Чтобы нам узнать какой пользователь локальный, а какой внешний то нам нужно выполнить тот же запрос, но еще добавить в выборку дополнительное поле по имени host.

mysql> SELECT user, host FROM mysql.user;

mysql users

Знак процента % означает что пользователь у нас является внешним, а значения localhost означает что пользователь локальный. Разница между локальным и внешним большая.

Вот к примеру у нас сейчас есть пользователь root. Мы под этим пользователем подключились к базе данных через консоль на самом сервере, где у нас установлена сама СУБД. Я допустим захочу подключиться к базе данных под этим же пользователем, но из своего ноутбука, то база данных мне этого сделать не даст так как root у нас локальный.

А от если я буду авторизоваться в базу данных из своего ноутбука, и использовать учетную запись it-inzhener, то база данных меня пропустит, потому что мы явно указали что у нас эта учетная запись является внешней. А от если я буду подключаться к базе данных через консоль на самом сервере где у нас установлена СУБД Mysql, то база данных меня не пропустит потому что подключатся к базе данных локально могут только локальные пользователи.

Вот и вся разница хоть и не большая, но может создать много проблем с доступом до базы данных.

Следующим примером допустим мы хотим узнать какие у нас пользователи заблокированные, а какие нет, для этого нам нужно выполнить тот же запрос, но еще добавить в выборку дополнительный параметр account_locked.

mysql> SELECT user, account_locked FROM mysql.user;

mysql users

Как видим в результате у нас появились какие-то Y и N. Так от значения N как раз и означает что пользователь является не заблокированный, а Y заблокированный, это значит что если возле учетной записи стоит N то пользователи сможет зайти в базу данных, а тот у кого стоит Y не сможет.

К примеру у нас в базе данных 1000 пользователей и подсчитывать сколько заблокированных, а сколько нет то это очень сложно и неудобно. Для такой цели мы можем наших пользователей сгруппировать с помощью дополнительной команды GROUP BY.

mysql> SELECT account_locked, COUNT(user) FROM mysql.user GROUP BY account_locked;

mysql users

В результате мы видим, что у нас 4 пользователя сейчас заблокированы и они не смогут пройти авторизацию в базу данных. А два пользователя у нас активны и они смогут зайти в базу данных.

Следующим простым примером мы можем посмотреть под каким пользователем мы сейчас авторизированны в базе данных.

mysql> SELECT user();

mysql users

mysql> SELECT current_user();

mysql users

В обоих вариантах база данных нам говорим что мы сейчас авторизированны из под учетной записи root.

В следующем примере мы можем посмотреть какие пользователи в данный момент авторизированны в базе данных. Этот обеспечивает нам важную информацию при мониторинге нашей базы данных Mysql на предмет несанкционированного доступа. Такая информация хранится в системной базе данных information_schema в таблице processlist.

mysql> SELECT user, host,db, command FROM information_schema.processlist;

mysql users

  • 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

Иконка MariaDB

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

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

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