MySQL: Пользователи, Права и Пароли

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

Аккаунт в MySQL состоит из двух компонентов: имя пользователя и хост.

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

В поле Host, помимо обычных IP адресов и доменных имен, вы можете увидеть знак процента %, который является спецсимволом обозначающим «любой» хост.

Важное Замечание: Спецсимвол % не включает в себя localhost, т.к. localhost обозначает подключение через UNIX сокет вместо стандартного TCP/IP.

Пользователи В MySQL

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

mysql> SELECT user FROM mysql.user;

Вывести только уникальные имена пользователей:

mysql> SELECT DISTINCT user FROM mysql.user;

Показать MySQL пользователей вместе с хостами с которых им разрешено подключение:

mysql> SELECT user,host FROM mysql.user;

Посмотреть MySQL пользователей, их пароли и хосты:

mysql> SELECT user,host,password FROM mysql.user;

начиная с MySQL 5.7:

mysql> SELECT host, user, authentication_string FROM mysql.user;

Дельный Совет: Нужно сменить пароль MySQL пользователя? Это легко сделать из командной строки! Читать далее →

Права Пользователей В MySQL

В MySQL, чтобы посмотреть какие привилегии даны пользователю, вы можете использовать команду SHOW GRANTS.

Без каких-либо дополнительных параметров, команда SHOW GRANTS показывает права текущего аккаунта под которым вы подключились на сервер.

Для команды SHOW GRANTS необходима привилегия SELECT по отношению к базе mysql, за исключением когда узнаются права текущего пользователя, таким образ, если у вас есть такая привилегия, вы также можете просмотреть права остальных MySQL пользователей.

Дельный Совет: Создайте базу данных в MySQL и дайте пользователю все права на нее с помощью GRANT ALL PRIVILEGES! Простое и понятное руководство с хорошими примерами по созданию базы данных в MySQL! Читать далее →

Права текущего MySQL пользователя:

mysql> SHOW GRANTS;

Какие привилегии даны MySQL пользователю (ели вы не указываете значение хоста для имени пользователя, тогда MySQL в качестве хоста берет %):

mysql> SHOW GRANTS FOR 'имя_пользователя';

Показать права, данные конкретному аккаунту в MySQL при подключении с определенного хоста:

mysql> SHOW GRANTS FOR 'имя_пользователя'@'хост';

— пример —

mysql> SHOW GRANTS FOR 'root'@'localhost';
mysql> SHOW GRANTS FOR 'root'@'%';
mysql> SHOW GRANTS FOR 'admin'@'192.168.0.1';

6 Replies to “MySQL: Пользователи, Права и Пароли”

  1. Or you could just in install percona toolkit and then run pt-show-grants.
    This is a solved problem.

    1. Yeap, u’re right. pt-show-grants shows MySQL users, passwords and grants nicely. But as you have mentioned it requires installation of percona-toolkit while the above commands work out of the box.

  2. When I run the given Query in MySQL version of 8.0
    —> select user,host,password from user;
    The error is generated
    —> ERROR 1054 (42S22): Unknown column ‘password’ in ‘field list’
    mysql>
    How to solve this.

    1. List out what columns are available to select from with the following query:
      SHOW columns FROM mysql.user;
      Ensure your requested columns shown in the list.

  3. MySQL versions 5.7 or higher doesnt have a column named password in mysql.user table. MySQL versions 5.7 or higher use the column authentication_string instead.

    So you query should be:

    mysql> SELECT host, user, authentication_string FROM mysql.user;

    Source Raymond Nijland:
    https://stackoverflow.com/questions/43833292/how-to-check-if-user-password-is-set-in-mysql

    1. Thanks. Updating the article.

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.