Как посмотреть список пользователей базы MySQL
Для того, чтобы посмотреть список пользователей MySQL-базы, необходимо подключиться к ней как root (или как другой пользователь, наделенный административными правами) и выполнить команду:
- Войдите в командную строку MySQL.
- Выполните следующую команду:
SELECT USER from mysql.user;
Остались вопросы?
Если у Вас что-то не получилось или остались вопросы по данной проблеме — обратитесь к автору и он Вам поможет.
Станьте одним из экспертов!
Мы будем рады видеть в своих рядах людей, которые могут поделиться своим опытом с другими!
Linux (любые дистрибутивы), MS Windows, Cisco, Python и многое другое.
Более чем 20-летний опыт в IT позволяет мне давать Вам мудрые советы.
Как посмотреть всех пользователей и привилегии в 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
Как посмотреть список пользователей базы 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 запрос который пользователь выполняет в данный момент.
В итоге коллеги пользуя команды которые представлены в статье вы теперь можете легко структурировать информацию о пользователях.
Всем спасибо, я надеюсь что вам моя статья хоть чем-то помогла.
Диагностика потерянных пользователей (SQL Server)
Пользователь, утративший связь с учетной записью, на сервере SQL Server — это пользователь базы данных, созданный с использованием учетных данных для входа в базу данных master , которые в этой базе данных masterуже не существуют. Это может произойти, если учетные данные для входа удалены или если база данных перемещена на другой сервер, где такие учетные данные для входа не существуют. В этом разделе описывается, как выполнять поиск пользователей, утративших связь с учетной записью, и повторно сопоставлять их с учетными данными для входа.
Чтобы снизить для пользователей риск утраты связи с учетной записью, доступ к базам данных, которые могут быть перемещены, следует осуществлять в качестве пользователей автономной базы данных. Дополнительные сведения см. в разделе Пользователи автономной базы данных — создание переносимой базы данных.
Историческая справка
Чтобы субъект безопасности (удостоверение пользователя базы данных) на основе имени входа мог подключаться к базе данных, расположенной в экземпляре SQL Server , такой субъект должен иметь допустимые учетные данные для входа в базу данных master . Эти учетные данные для входа используются при проверке подлинности, в ходе которой проверяется идентификатор субъекта и определяются разрешения на его подключение к экземпляру SQL Server. Имена входа SQL Server в экземпляр сервера можно просмотреть в представлении каталога sys.server_principals и представлении совместимости sys.sql_logins .
SQL Server используются для доступа к отдельным базам данных в качестве пользователей базы данных, сопоставленных с учетными данными SQL Server. Есть три исключения из этого правила:
- Пользователи автономной базы данных. Пользователи автономной базы данных проходят проверку подлинности на уровне базы данных пользователей; они не связаны с учетными данными для входа. Мы рекомендуем этот вариант, так как базы данных становятся более переносимыми, а пользователи автономной базы данных не могут утратить связь с учетной записью. Но таких пользователей приходится создавать заново для каждой базы данных. Это решение может быть неэффективным в среде со множеством баз данных.
- Учетная запись гостя . Если такая учетная запись включена в базе данных, она позволяет входить в базу данных в качестве SQL Server гостя с использованием учетных данных , которые не сопоставлены с пользователями базы данных. По умолчанию учетная запись гостя отключена.
- Членство в группе Microsoft Windows. Имя входа SQL Server , созданное из учетной записи пользователя Windows, может войти в базу данных, если пользователь Windows входит в группу Windows, являющуюся также пользователем базы данных.
Сведения о сопоставлении имени входа SQL Server с пользователем базы данных хранятся в базе данных. Эти сведения включают в себя имя пользователя базы данных и идентификатор безопасности соответствующего имени входа SQL Server . Для авторизации в базе данных используются разрешения, установленные для этого пользователя базы данных.
Пользователь базы данных (на основе учетных данных), для которого в экземпляре сервера не определены или неправильно определены соответствующие учетные данные SQL Server , не сможет подключиться к этому экземпляру. Такой пользователь называется утратившим связь с учетной записью базы данных на этом экземпляре сервера. Утрата связи с учетной записью происходит, если пользователь базы данных сопоставлен с идентификатором безопасности учетных данных, который отсутствует в экземпляре master . Кроме того, пользователь базы данных может утратить связь с учетной записью, если база данных была восстановлена или прикреплена к другому экземпляру SQL Server , для которого такие учетные данные не были созданы. Также пользователь базы данных может утратить связь с учетной записью после удаления соответствующих учетных данных SQL Server . Даже если учетные данные будут созданы заново, им будет присвоен другой идентификатор безопасности, поэтому связь пользователя с учетной записью будет утеряна.
Обнаружение потерянных пользователей
Для SQL Server и PDW
Чтобы обнаружить утративших связь с учетной записью пользователей в SQL Server на основе отсутствующих имен для проверки подлинности SQL Server , выполните в пользовательской базе данных следующую инструкцию:
SELECT dp.type_desc, dp.sid, dp.name AS user_name FROM sys.database_principals AS dp LEFT JOIN sys.server_principals AS sp ON dp.sid = sp.sid WHERE sp.sid IS NULL AND dp.authentication_type_desc = 'INSTANCE';
Выходные данные содержат список пользователей проверки подлинности SQL Server и соответствующие идентификаторы безопасности в текущей базе данных, которые не связаны ни с одним именем входа SQL Server.
Для Базы данных SQL Azure и Azure Synapse Analytics
Таблица sys.server_principals недоступна в базе данных SQL или Azure Synapse Analytics. Чтобы определить пользователей, утративших связь с учетной записью, в этих средах, выполните указанные ниже действия.
-
Подключитесь к базе данных master и выберите идентификаторы безопасности для имен входа с помощью следующего запроса:
SELECT sid FROM sys.sql_logins WHERE type = 'S';
SELECT name, sid, principal_id FROM sys.database_principals WHERE type = 'S' AND name NOT IN ('guest', 'INFORMATION_SCHEMA', 'sys') AND authentication_type_desc = 'INSTANCE';
Устранение проблем с потерянным пользователем
Чтобы восстановить отсутствующие учетные данные, используйте инструкцию CREATE LOGIN с параметром SID в базе данных master. При этом укажите SID пользователя базы данных, полученный в предыдущем разделе:
CREATE LOGIN WITH PASSWORD = '', SID = ;
Чтобы сопоставить пользователя, утратившего связь с учетной записью, с уже существующими учетными данными в базе данных master, выполните инструкцию ALTER USER в пользовательской базе данных, указав имя входа.
ALTER USER WITH Login = ;
После повторного создания отсутствующих учетных данных пользователь сможет получать доступ к базе данных с использованием указанного пароля. Пользователь сможет затем изменить пароль для входа с помощью инструкции ALTER LOGIN.
ALTER LOGIN WITH PASSWORD = '';
Любой пользователь может изменить свой пароль. Изменять пароли для других пользователей могут только пользователи с учетными данными, для которых задано разрешение ALTER ANY LOGIN . Однако только члены роли sysadmin могут изменять пароли членов роли sysadmin .
