ChatGPT解决这个技术问题 Extra ChatGPT

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

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

我正在使用 MySQL 5.4.1 版。

@Mustapha 为什么标题变了?这里的答案是您可以从任何地方运行的 SQL,而不仅仅是命令行。该标签为问题添加了什么?
我编辑的目的是保持标题和描述之间的一致性,但我认为你的观点很好。进行编辑 @Rup 先生

6
6 revs, 4 users 38%

使用此查询:

SELECT User FROM mysql.user;

这将输出如下表格:

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

作为 Matthew Scharley points out in the comments on this answer,如果您只想查看唯一的用户名,可以按 User 列进行分组。


我认为可能也有必要在 User 上进行分组,以仅获取唯一的用户值,因为每个 user@host 条目都有单独的行。
如何在没有 sql 查询的情况下找到相同的信息?
@barrycarter DELETE FROM mysql.user; 最好有 WHERE user='someuser' and host='somehost'; 如果你这样做 DELETE FROM mysql.user;,所有用户都会消失。下次 mysql 重新启动或 FLUSH PRIVILEGES; 将用户从内存中删除后登录。这是我关于负责任地做 DELETE FROM mysql.user 的帖子之一的示例:dba.stackexchange.com/questions/4614/…
@杰弗里SHOW GRANTS FOR 'user'@'host';
您可以使用 DISTINCT 关键字代替分组:SELECT DISTINCT user FROM mysql.user;
s
spkane

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

select User,Host from mysql.user;

只是好奇。当使用 mysql 数据库时,这个 host 什么时候会起作用? [Mysql菜鸟]
当您从不同的服务器连接时,@Packer host 会发挥作用。可以授予对 'packer'@'example.com''packer'@'google.com' 的不同访问权限
R
RolandoMySQLDBA

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

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

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

这与spkane's answer基本相同。连接用户列和主机列有什么好处?
一个例子:user@host 格式用于设置密码。在 SET PASSWORD 命令中省略主机会产生错误。 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)
最佳答案,无论反对者可能抱怨什么。我唯一要改变的是在其上附加一个 ORDER BY user
P
Peter Mortensen

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

select distinct User from mysql.user;

V
VPK

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 |
|                  | %         |
+------------------+-----------+

J
Jesse Vogt

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

select User from mysql.user;

E
Etzeitet
SELECT * FROM mysql.user;

这是一张大表,因此您可能希望对选择的字段更有选择性。


我有 3 个具有不同主机的 root 用户。 localhost127.0.0.1::1。我必须保留哪一个,我必须删除什么?谢谢!
如果您不希望人们通过网络连接,旧标准是删除所有这些。但是,如今,似乎建议保留 localhost ,因为无论如何它们都无法通过网络访问;这意味着您应该保留所有这些。
P
Peter Mortensen

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

select User from mysql.user;

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

我会说 +1 提到以 root 身份登录。我试过不这样做,但没有用;)
您需要授予 user1 权限以显示用户列表。如果没有 root 用户,您将收到错误消息。所以首先提供权限。以 root 用户身份登录,然后键入命令 GRANT SELECT ON mysql.user TO 'user1'@'localhost'; 现在以 user1 身份登录并键入命令 select User from mysql.user; 您将看到显示的用户列表。 :) +1 享受
P
Palec

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

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

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

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

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

P
Peter Mortensen

Peter 和 Jesse 是正确的,但请确保您首先选择“mysql”数据库。

use mysql;
select User from mysql.user;

那应该做你的伎俩。


如果您像以前那样将表范围限定为 mysql 数据库,则不需要 use mysql;。您只需select User from mysql.user;
添加 use mysql; 只是为了您可以使用 select User from user; 而不是 select User from mysql.user; 因为它通常是一次性查询,不需要使用 mysql db
use mysql 之后,如果您使用了 select user from user;,那么这可能是一些事情,但是您使用的是 mysql.user,这使得在开始时使用 use mysql 是不必要的。
P
Peter Mortensen

这将显示唯一用户列表:

SELECT DISTINCT User FROM mysql.user;

P
Peter Mortensen
$>  mysql -u root -p -e 'Select user from mysql.user' > allUsersOnDatabase.txt

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


C
Community

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

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

什么是“DML”和“DDL”?您可以链接到(特定)上下文吗?
P
Peter Mortensen
SELECT User FROM mysql.user;

使用上述查询获取 MySQL 用户。


J
Javier G.Raya

要查看您的用户,可以使用 mysql 数据库。

USE mysql;

然后进行选择。

SELECT user,host FROM user;

另一种选择是放置BD.Table。

例如 :

SELECT user,host FROM mysql.user;