关于mysql5:如何获取MySQL用户帐户列表

How to get a list of MySQL user accounts

我正在使用mysql命令行实用程序,可以在数据库中导航。现在我需要查看用户帐户列表。我该怎么做?

我使用的是MySQL版本5.4.1


使用此查询:

它将输出这样的表:

1
2
3
4
5
6
7
+-------+
| User  |
+-------+
| root  |
+-------+
| user2 |
+-------+

正如Matthew Scharley在对这个答案的评论中指出的那样,如果您只想看到唯一的用户名,那么可以按User列分组。


我发现这种格式最有用,因为它包含主机字段,这在MySQL中对于区分用户记录很重要。

1
select User,Host from mysql.user;


用户帐户由用户名和主机级访问组成。

因此,这是一个提供所有用户帐户的查询

1
SELECT CONCAT(QUOTE(user),'@',QUOTE(host)) UserAccount FROM mysql.user;


要避免用户从不同来源连接时重复:


如果您引用的是实际的MySQL用户,请尝试:


MySQL将用户信息存储在自己的数据库中。数据库的名称是MySQL。在该数据库中,用户信息位于一个名为User的数据集表中。如果要查看在mysql用户表中设置了哪些用户,请运行以下命令:

1
2
3
4
5
6
7
8
9
10
11
SELECT User, Host FROM mysql.user;

+------------------+-----------+
| User             | Host      |
+------------------+-----------+
| root             | localhost |
| root             | demohost  |
| root             | 127.0.0.1 |
| debian-sys-maint | localhost |
|                  | %         |
+------------------+-----------+


1
SELECT * FROM mysql.user;

这是一个很大的表,所以您可能希望对您选择的字段有更多的选择。


以根用户身份登录mysql,查询后键入

1
2
3
4
5
6
7
8
9
select User from mysql.user;

+------+
| User |
+------+
| amon |
| root |
| root |
+------+


在确定用户权限时,mysql.db表可能更重要。我认为如果您在grant命令中提到一个表,就会在其中创建一个条目。在我的例子中,mysql.users表在用户明显能够连接和选择等时没有显示用户的权限。

1
2
3
4
mysql> select * from mysql.db;
mysql> select * from db;
+---------------+-----------------+--------+-------------+-------------+-------------+--------
| Host          | Db              | User   | Select_priv | Insert_priv | Update_priv | Del...


我使用此选项对用户进行排序,因此允许的主机更容易识别:

1
mysql> SELECT User,Host FROM mysql.user ORDER BY User,Host;

Peter和Jesse是正确的,但要确保首先选择MySQLdb。

use mysql;

select User from mysql.user;

那应该是你的把戏


这将显示唯一用户列表:


1
$>  mysql -u root -p -e 'Select user from mysql.user' > allUsersOnDatabase.txt

在linux提示符下执行这个命令,首先要求输入mysql根用户的密码,提供正确的密码后,会将所有数据库用户打印到文本文件中。


我发现他的一个更有用,因为它提供了有关DML和DDL特权的附加信息

1
2
3
SELECT user, Select_priv, Insert_priv , Update_priv, Delete_priv,
       Create_priv, Drop_priv, Shutdown_priv, Create_user_priv
FROM mysql.user;

使用上面的查询获取mysql用户