如何在 MySQL 中使用命令行获取用户帐户列表?

我正在使用 MySQL 命令行实用程序,并且可以浏览数据库。现在,我需要查看用户帐户列表。我怎样才能做到这一点?

我正在使用 MySQL 5.4.1版本。

答案

使用此查询:

SELECT User FROM mysql.user;

它将输出如下表:

+-------+
| User  |
+-------+
| root  |
+-------+
| user2 |
+-------+

正如 Matthew Scharley 在对此答案的评论中指出的那样,如果您只想查看唯一的用户名,则可以按 “ User列进行分组。

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

select User,Host from mysql.user;

用户帐户包括用户名和主机级别访问权限。

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

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

为了避免用户从不同来源进行连接时的重复:

select distinct User from mysql.user;

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

select User from mysql.user;

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

SELECT User, Host FROM mysql.user;

+------------------+-----------+
| User             | Host      |
+------------------+-----------+
| root             | localhost |
| root             | demohost  |
| root             | 127.0.0.1 |
| debian-sys-maint | localhost |
|                  | %         |
+------------------+-----------+
SELECT * FROM mysql.user;

这是一张大桌子,所以您可能希望在选择哪些字段时更具选择性。

以 root 身份登录 mysql 并键入以下查询

select User from mysql.user;

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

mysql.db 表在确定用户权限时可能更重要。我认为,如果您在 GRANT 命令中提到一个表,则会在其中创建一个条目。以我为例,当 mysql.users 表显然能够连接并选择时,该表未显示用户权限。

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

我使用它来对用户进行排序,因此允许主机更容易发现:

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