- MySQL “show users”: How to list the users in a MySQL database
- Solution
- How to reduce the amount of ‘user’ information shown
- Как показать / составить список пользователей в MySQL
- Подготовка
- Показать всех пользователей MySQL
- Показать пользователей, имеющих доступ к конкретной базе данных
- Выводы
- MySQL SHOW USERS: List All Users in a MySQL Database Server
- MySQL show users: list all users
- Show current user
- Show current logged users
MySQL “show users”: How to list the users in a MySQL database
MySQL FAQ: How do I show/list MySQL users, i.e., the user accounts in a MySQL or MariaDB database?
Solution
To show the users in a MySQL database, first log into your MySQL server as an administrative user using the mysql command line client, then run this MySQL query:
mysql> select * from mysql.user;
However, note that this query shows all of the columns from the mysql.user table. This makes for a lot of output, so as a practical matter you may want to trim down some of the fields to display, something like this:
mysql> select host, user, password from mysql.user;
The next section provides more details and information about this second query.
How to reduce the amount of ‘user’ information shown
You can get a listing of the fields in the mysql.user table by running this MySQL query:
mysql> desc mysql.user;
On my current server this shows the following 37 columns of MySQL user information, as shown here:
mysql> desc mysql.user; +-----------------------+-----------------------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------------------+-----------------------------------+------+-----+---------+-------+ | Host | char(60) | NO | PRI | | | | User | char(16) | NO | PRI | | | | Password | char(41) | NO | | | | | Select_priv | enum('N','Y') | NO | | N | | | Insert_priv | enum('N','Y') | NO | | N | | | Update_priv | enum('N','Y') | NO | | N | | | Delete_priv | enum('N','Y') | NO | | N | | | Create_priv | enum('N','Y') | NO | | N | | | Drop_priv | enum('N','Y') | NO | | N | | | Reload_priv | enum('N','Y') | NO | | N | | | Shutdown_priv | enum('N','Y') | NO | | N | | | Process_priv | enum('N','Y') | NO | | N | | | File_priv | enum('N','Y') | NO | | N | | | Grant_priv | enum('N','Y') | NO | | N | | | References_priv | enum('N','Y') | NO | | N | | | Index_priv | enum('N','Y') | NO | | N | | | Alter_priv | enum('N','Y') | NO | | N | | | Show_db_priv | enum('N','Y') | NO | | N | | | Super_priv | enum('N','Y') | NO | | N | | | Create_tmp_table_priv | enum('N','Y') | NO | | N | | | Lock_tables_priv | enum('N','Y') | NO | | N | | | Execute_priv | enum('N','Y') | NO | | N | | | Repl_slave_priv | enum('N','Y') | NO | | N | | | Repl_client_priv | enum('N','Y') | NO | | N | | | Create_view_priv | enum('N','Y') | NO | | N | | | Show_view_priv | enum('N','Y') | NO | | N | | | Create_routine_priv | enum('N','Y') | NO | | N | | | Alter_routine_priv | enum('N','Y') | NO | | N | | | Create_user_priv | enum('N','Y') | NO | | N | | | ssl_type | enum('','ANY','X509','SPECIFIED') | NO | | | | | ssl_cipher | blob | NO | | NULL | | | x509_issuer | blob | NO | | NULL | | | x509_subject | blob | NO | | NULL | | | max_questions | int(11) unsigned | NO | | 0 | | | max_updates | int(11) unsigned | NO | | 0 | | | max_connections | int(11) unsigned | NO | | 0 | | | max_user_connections | int(11) unsigned | NO | | 0 | | +-----------------------+-----------------------------------+------+-----+---------+-------+ 37 rows in set (0.10 sec)
So for most cases where you want to show MySQL user accounts you’ll probably want to limit your MySQL users’ query to a few important columns, something like this:
select host, user, password from mysql.user;
In summary, if you need to list the users in a MySQL database, I hope this has been helpful.
Как показать / составить список пользователей в MySQL
Вам когда-нибудь нужно было получить список всех пользователей на вашем сервере MySQL? Есть команды для отображения баз данных и таблиц, но нет команды MySQL show users .
В этом руководстве объясняется, как вывести список всех учетных записей пользователей на сервере базы данных MySQL с помощью командной строки. Мы также покажем вам, как узнать, какие пользователи имеют доступ к данной базе данных.
Подготовка
Мы предполагаем, что в вашей системе уже установлен сервер MySQL или MariaDB.
Все команды выполняются внутри оболочки MySQL от имени пользователя root. Чтобы получить доступ к оболочке MySQL, введите следующую команду и при появлении запроса введите пароль root-пользователя MySQL:
Если вы не установили пароль для своего пользователя root MySQL, вы можете опустить опцию -p .
Показать всех пользователей 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 и т. Д.
Используйте команду 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 SHOW USERS: List All Users in a MySQL Database Server
Summary: this tutorial shows you how to list users in a MySQL database.
MySQL show users: list all users
Are you looking for the MySQL SHOW USERS command? Unfortunately, MySQL does not have the SHOW USERS command like SHOW DATABASES , SHOW TABLES , etc., therefore to list all users in a MySQL database server, you use the following query:
SELECT user FROM mysql.user;
Code language: SQL (Structured Query Language) (sql)
In this statement, we queried user data from the user table of the mysql database.
To execute this query, you must log in to the MySQL database server as an administrator.
>mysql -u root -p Enter password: *********** mysql> use mysql; Database changed mysql> SELECT user FROM user;
Code language: SQL (Structured Query Language) (sql)
The following shows the output of the query above:
+-----------+ | user | +-----------+ | mysql.sys | | mysqlxsys | | root | +-----------+ 3 rows in set (0.00 sec)
Code language: SQL (Structured Query Language) (sql)
As you can see, we have three users in our local database.
To get more information on the user table, you can preview its columns using the following command:
DESC user;
Code language: SQL (Structured Query Language) (sql)
For example, to show users and other information such as host, account locking, and password expiration status, you use the following query:
SELECT user, host, account_locked, password_expired FROM user;
Code language: SQL (Structured Query Language) (sql)
Here is the output of the query.
Show current user
To get the information on the current user, you use the user() function as shown in the following statement:
mysql> SELECT user(); +-----------------+ | user() | +-----------------+ | local@localhost | +-----------------+ 1 row in set (0.00 sec)
Code language: SQL (Structured Query Language) (sql)
Or you use the current_user() function:
mysql> SELECT current_user(); +----------------+ | current_user() | +----------------+ | local@localhost | +----------------+ 1 row in set (0.00 sec)
Code language: SQL (Structured Query Language) (sql)
In this case, the current user is local@localhost .
Show current logged users
To list all users that are currently logged in the MySQL database server, you execute the following statement:
SELECT user, host, db, command FROM information_schema.processlist; +-------+-----------------+---------------+---------+ | user | host | db | command | +-------+-----------------+---------------+---------+ | local | localhost:50591 | classicmodels | Sleep | | root | localhost:50557 | NULL | Query | +-------+-----------------+---------------+---------+ 2 rows in set (0.00 sec)
Code language: SQL (Structured Query Language) (sql)
As use can see, there are two users that are currently logged in the MySQL database, one is executing a query while the other is “sleep”.
In this tutorial, you have learned how to list all users in a MySQL database server by querying data from the user table in the mysql database.