如何获取MySQL用户帐户列表

bur*_*gar 1320 mysql command-line mysql5

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

我正在使用MySQL版本5.4.1.

Geo*_*orn 1831

使用此查询:

SELECT User FROM mysql.user;
Run Code Online (Sandbox Code Playgroud)

这将输出如下表格:

+-------+
| User  |
+-------+
| root  |
+-------+
| user2 |
+-------+
Run Code Online (Sandbox Code Playgroud)

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

  • 我认为可能有必要对'User`进行分组,只获得唯一的用户值,因为每个`user` @`host`条目都有一个单独的行. (47认同)
  • @barrycarter`DELETE FROM mysql.user;`更好的是'WHERE user ='someuser'和host ='somehost';`如果你``DELETE FROM mysql.user;`,所有用户都不见了.在下一次mysql重启后登录或`FLUSH PRIVILEGES;`从内存中消除用户.这是我的一篇关于负责任地"删除来自mysql.user"的帖子的例子:http://dba.stackexchange.com/questions/4614/cannot-drop-anonymous-user-from-mysql-user/4615# 4615 (8认同)
  • 而不是分组你可以只使用`DISTINCT`关键字:`SELECT DISTINCT user FROM mysql.user;` (5认同)
  • 如何在没有sql查询的情况下找到相同的信息? (4认同)
  • @Geoffrey`为'用户'@'主持人'显示奖励;` (3认同)

spk*_*ane 441

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

select User,Host from mysql.user;
Run Code Online (Sandbox Code Playgroud)

  • @Packer当你从不同的服务器连接时,`host`开始起作用.可以授予对''packer'@'example.com'和''packer'@'google.com'的不同访问权限. (7认同)

Rol*_*DBA 114

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

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

SELECT CONCAT(QUOTE(user),'@',QUOTE(host)) UserAccount FROM mysql.user;
Run Code Online (Sandbox Code Playgroud)

  • 一个例子:`user @ host`格式用于设置密码.从[`SET PASSWORD`](http://dev.mysql.com/doc/refman/5.0/en/set-password.html)命令中省略主机会产生错误.`SET PASSWORD FOR wordpressuser = PASSWORD('...');`产生错误`ERROR 1133(42000):在用户表中找不到任何匹配的行.包括主机,它的工作原理.`set PASSWORD FOR wordpressuser @ localhost = PASSWORD('...');`生成`查询OK,0行受影响(0.00秒)`. (8认同)
  • 这基本上与[spkane的回答](http://stackoverflow.com/a/11367654/111424)相同.连接用户列和主机列有什么好处? (7认同)
  • 无论反对者可能抱怨什么,最好的答案.我唯一想改变的就是将"ORDER BY用户"附加到它上面. (3认同)

Nic*_*ini 48

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

select distinct User from mysql.user;
Run Code Online (Sandbox Code Playgroud)


Jes*_*ogt 30

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

select User from mysql.user;
Run Code Online (Sandbox Code Playgroud)


VPK*_*VPK 29

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 |
|                  | %         |
+------------------+-----------+
Run Code Online (Sandbox Code Playgroud)


Etz*_*tet 23

SELECT * FROM mysql.user;
Run Code Online (Sandbox Code Playgroud)

这是一张大桌子,所以你可能希望在你选择的领域更具选择性.

  • 如果您不希望人们通过网络连接,旧标准是删除所有这些.如今,似乎建议保留localhost,因为它们无法通过网络访问; 这意味着你应该*保留*所有这些. (4认同)
  • 我有3个root用户和不同的主机.`localhost`,`127.0.0.1`和​​`:: 1`.我必须保留哪一个,我必须删除哪些内容?谢谢! (2认同)

san*_*kar 18

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

select User from mysql.user;

+------+
| User |
+------+
| amon |
| root |
| root |
+------+
Run Code Online (Sandbox Code Playgroud)


Bra*_*Dre 15

mysql.db表在确定用户权限时可能更重要.我想如果你在GRANT命令中提到一个表,就会创建一个条目.在我的情况下,当mysql.users表显然能够连接和选择等时,它没有显示用户的权限.

mysql> select * from mysql.db;
mysql> select * from db;
+---------------+-----------------+--------+-------------+-------------+-------------+--------
| Host          | Db              | User   | Select_priv | Insert_priv | Update_priv | Del...
Run Code Online (Sandbox Code Playgroud)

  • 在我看来,重要的是允许用户在数据库上做什么。所以“SHOW GRANTS”非常有用,因为它显示了谁可以做什么。 (2认同)

Tob*_*olm 12

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

mysql> SELECT User,Host FROM mysql.user ORDER BY User,Host;
Run Code Online (Sandbox Code Playgroud)


Arm*_*zat 11

彼得和杰西是正确的,但只要确保你首先选择mysql数据库.

use mysql;

select User from mysql.user;

应该做你的伎俩

  • 如果你将表的范围扩展到mysql数据库,那么就不必使用mysql;` 你可以从mysql.user中选择用户;` (22认同)
  • 添加`use mysql;`就是这样你可以使用`select user from user;`而不是`select user from mysql.user;`因为它通常是一次性查询,所以不需要使用mysql db (5认同)

小智 9

这将显示唯一用户列表:

SELECT DISTINCT User FROM mysql.user;
Run Code Online (Sandbox Code Playgroud)


Mia*_*mad 5

$>  mysql -u root -p -e 'Select user from mysql.user' > allUsersOnDatabase.txt
Run Code Online (Sandbox Code Playgroud)

在 Linux 命令行提示符下执行此命令将首先询问 MySQL root 用户的密码。提供正确的密码后,它会将所有数据库用户打印到文本文件中。