提问人:burntsugar 提问时间:7/16/2009 最后编辑:Peter Mortensenburntsugar 更新时间:3/28/2022 访问量:1436777
如何使用MySQL中的命令行获取用户帐户列表?
How can I get a list of user accounts using the command line in MySQL?
答:
1890赞
6 revs, 4 users 38%George Claghorn
#1
使用此查询:
SELECT User FROM mysql.user;
这将输出如下表:
+-------+
| User |
+-------+
| root |
+-------+
| user2 |
+-------+
正如马修·沙利(Matthew Scharley)在对此答案的评论中指出的那样,如果您只想查看唯一的用户名,则可以按列分组。User
评论
47赞
Matthew Scharley
7/16/2009
我认为可能也有必要进行分组,以便仅获取唯一的用户值,因为每个@条目都有单独的行。User
user
host
5赞
Divyanshu Das
10/21/2013
如何在没有sql查询的情况下找到相同的信息?
8赞
RolandoMySQLDBA
5/4/2014
@barrycarter最好有 如果你这样做,所有用户都走了。下次 mysql 重新启动后登录或从内存中删除用户。这是我关于负责任地做事的一篇文章的一个例子:dba.stackexchange.com/questions/4614/......DELETE FROM mysql.user;
WHERE user='someuser' and host='somehost';
DELETE FROM mysql.user;
FLUSH PRIVILEGES;
DELETE FROM mysql.user
3赞
fancyPants
4/28/2015
@GeoffreySHOW GRANTS FOR 'user'@'host';
5赞
user2683246
1/26/2016
您可以只使用关键字来代替分组:DISTINCT
SELECT DISTINCT user FROM mysql.user;
31赞
Jesse Vogt
7/16/2009
#2
如果您指的是实际的MySQL用户,请尝试:
select User from mysql.user;
24赞
Etzeitet
7/16/2009
#3
SELECT * FROM mysql.user;
这是一个大表,所以你可能想对你选择的字段更有选择性。
评论
2赞
emotality
1/28/2015
我有 3 个具有不同主机的 root 用户。和。我必须保留哪一个,必须删除哪些?谢谢!localhost
127.0.0.1
::1
4赞
trysis
3/21/2015
如果您不希望人们通过网络连接,旧标准是删除所有这些。不过,如今似乎建议保留本地主机,因为它们无论如何都无法通过网络访问;这意味着您应该保留所有这些。
12赞
Armin Nehzat
5/5/2012
#4
Peter 和 Jesse 是正确的,但请确保您首先选择“mysql”数据库。
use mysql;
select User from mysql.user;
这应该可以解决问题。
评论
23赞
vitaLee
3/27/2013
如果您像以前那样将表的范围限定为 mysql 数据库,则没有必要。你可以只是use mysql;
select User from mysql.user;
5赞
Dan
10/24/2013
添加只是为了让您改用,因为它通常是一次性查询,因此无需使用 mysql 数据库use mysql;
select User from user;
select User from mysql.user;
1赞
Sнаđошƒаӽ
2/13/2016
之后,如果你使用过,那本来可以是什么东西,但你正在使用 ,这使得一开始就没有必要使用。use mysql
select user from user;
mysql.user
use mysql
461赞
spkane
7/7/2012
#5
我发现这种格式最有用,因为它包含主机字段,这在MySQL中对于区分用户记录很重要。
select User,Host from mysql.user;
评论
1赞
Prabhakar
3/12/2016
只是好奇。在使用 mysql 数据库时,这什么时候会发挥作用?[ mysql 菜鸟]host
7赞
Ray Baxter
4/25/2016
当您从其他服务器连接时,@Packer会发挥作用。可以授予对 和 的不同访问权限host
'packer'@'example.com'
'packer'@'google.com'
52赞
Nicolas Manzini
9/30/2013
#6
要避免用户从不同源连接时重复,请执行以下操作:
select distinct User from mysql.user;
126赞
RolandoMySQLDBA
9/30/2013
#7
用户帐户包括用户名和主机级别访问权限。
因此,这是提供所有用户帐户的查询
SELECT CONCAT(QUOTE(user),'@',QUOTE(host)) UserAccount FROM mysql.user;
评论
7赞
Iain Samuel McLean Elder
10/15/2013
这与spkane的回答基本相同。连接用户列和主机列有什么好处?
8赞
Iain Samuel McLean Elder
10/15/2013
一个例子:该格式用于设置密码。从 SET PASSWORD
命令中省略主机会产生错误。 产生错误。包括主机,它就可以工作了。 生产。user@host
SET PASSWORD FOR wordpressuser = PASSWORD('...');
ERROR 1133 (42000): Can't find any matching row in the user table
SET PASSWORD FOR wordpressuser@localhost = PASSWORD('...');
Query OK, 0 rows affected (0.00 sec)
3赞
sjas
5/22/2015
最好的答案,无论反对者可能会抱怨什么。我唯一要改变的是附加一个。ORDER BY user
19赞
sandip divekar
3/4/2014
#8
以 root 身份登录 MySQL 并键入以下查询:
select User from mysql.user;
+------+
| User |
+------+
| amon |
| root |
| root |
+------+
评论
0赞
leenephi
3/26/2014
我会说 +1 提到以 root 身份登录。我试过没有这样做,但它没有用;)
0赞
sandip divekar
3/26/2014
您需要向 user1 授予权限才能显示用户列表。如果没有root用户,您将收到错误。因此,首先提供权限。以 root 用户身份登录,然后键入命令 now 以 user1 身份登录并键入命令 您将看到显示的用户列表。:) +1 享受GRANT SELECT ON mysql.user TO 'user1'@'localhost';
select User from mysql.user;
16赞
Brad Dre
12/28/2014
#9
mysql.db表在确定用户权限时可能更重要。我认为如果您在 GRANT 命令中提到一个表,就会在其中创建一个条目。就我而言,mysql.users 表在显然能够连接和选择等时没有显示用户的权限。
mysql> select * from mysql.db;
mysql> select * from db;
+---------------+-----------------+--------+-------------+-------------+-------------+--------
| Host | Db | User | Select_priv | Insert_priv | Update_priv | Del...
评论
2赞
Developer Marius Žilėnas
4/6/2015
在我看来,重要的是允许用户在数据库上做什么。因此,“SHOW GRANTS”非常有用,因为它显示了谁被允许做什么。
12赞
Nikhil Chavda
9/9/2016
#10
这将显示唯一用户列表:
SELECT DISTINCT User FROM mysql.user;
33赞
VPK
10/26/2016
#11
MySQL将用户信息存储在自己的数据库中。数据库的名称是 。在该数据库中,用户信息位于一个名为 的表(数据集)中。如果要查看 MySQL 用户表中设置了哪些用户,请运行以下命令:MySQL
user
SELECT User, Host FROM mysql.user;
+------------------+-----------+
| User | Host |
+------------------+-----------+
| root | localhost |
| root | demohost |
| root | 127.0.0.1 |
| debian-sys-maint | localhost |
| | % |
+------------------+-----------+
13赞
Tobias Holm
11/3/2016
#12
我用它来对用户进行排序,因此允许的主机更容易被发现:
mysql> SELECT User,Host FROM mysql.user ORDER BY User,Host;
6赞
Mian Ahmad
2/21/2017
#13
$> mysql -u root -p -e 'Select user from mysql.user' > allUsersOnDatabase.txt
在 Linux 命令行提示符下执行此命令将首先询问 MySQL root 用户的密码。在提供正确的密码后,它会将所有数据库用户打印到文本文件中。
4赞
Alper t. Turker
8/29/2017
#14
我发现他的一个更有用,因为它提供了有关 DML 和 DDL 权限的其他信息
SELECT user, Select_priv, Insert_priv , Update_priv, Delete_priv,
Create_priv, Drop_priv, Shutdown_priv, Create_user_priv
FROM mysql.user;
评论
0赞
Peter Mortensen
8/6/2021
什么是“DML”和“DDL”?你能链接到(特定的)上下文吗?
1赞
Arun Karnawat
2/15/2019
#15
SELECT User FROM mysql.user;
使用上面的查询获取 MySQL 用户。
1赞
Javier G.Raya
3/28/2022
#16
要查看您的用户,请使用 mysql 数据库。
USE mysql;
然后进行选择。
SELECT user,host FROM user;
另一种选择是将 BD.表。
例如:
SELECT user,host FROM mysql.user;
评论