查询 MySQL 用户有多种方法,主要分为两大类:使用 MySQL 命令行工具和使用图形化界面工具。
我将以最常用和权威的命令行方式为主进行详细说明。
方法一:使用 MySQL 命令行工具(最直接的方法)
首先,你需要使用一个具有足够权限的账户(如 root 用户)登录到 MySQL 服务器。
mysql -u root -p
然后输入密码。
1. 查询所有用户列表(核心方法)
MySQL 将所有用户账户信息存储在默认数据库 mysql 的 user 表中。因此,直接查询该表即可。
SELECT User, Host FROM mysql.user;
解释:
SELECT User, Host:选择显示用户名列和主机名列。FROM mysql.user:从mysql数据库的user表中查询。- 在 MySQL 中,一个用户的完整标识是
'用户名'@'主机名'。主机名指定了该用户可以从哪里连接到数据库(例如,'root'@'localhost'和'root'@'%'是两个不同的用户)。
执行结果示例:
+------------------+-----------+
| User | Host |
+------------------+-----------+
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
| myapp_user | % |
| readonly_user | 192.168.1.%|
+------------------+-----------+
2. 获取更详细的用户信息
你可以从 mysql.user 表中选择更多的列来获取用户的详细权限和设置。
SELECT User, Host, account_locked, password_expired, authentication_string, Select_priv, Insert_priv, Update_priv, Delete_priv FROM mysql.user;
解释:
account_locked:账户是否被锁定(Y/N)。password_expired:密码是否过期(Y/N)。authentication_string:密码的加密哈希值(在 MySQL 5.7.6+ 中,此列取代了password列)。Select_priv,Insert_priv…:这些列表示用户的全局权限(是否为Y)。


