在Linux系统中运维MySQL数据库时,查询已有用户的信息是基础且高频的操作,无论是排查权限问题还是梳理数据库访问账号,都需要掌握对应的查询方法。

登录MySQL数据库
要查询MySQL的用户信息,首先需要登录到MySQL服务,在Linux终端执行以下命令,输入对应密码后即可进入MySQL交互界面:
# 登录MySQL,root为用户名,根据实际情况替换 mysql -u root -p
查询所有MySQL用户
MySQL的用户信息存储在mysql系统库的user表中,执行以下SQL语句可以查询所有用户的用户名和允许登录的主机:
-- 查询所有用户的用户名和登录主机 SELECT user, host FROM mysql.user;
如果需要查看更详细的用户信息,比如用户的密码过期状态、账户锁定状态,可以扩展查询字段:
-- 查询用户详细信息 SELECT user, host, authentication_string, password_expired, account_locked FROM mysql.user;
查询指定条件的用户
如果只需要查询特定条件的用户,比如查询允许从本地登录的用户,或者查询指定用户名的用户,可以添加WHERE条件筛选:
-- 查询允许从本地登录的用户 SELECT user, host FROM mysql.user WHERE host = 'localhost'; -- 查询用户名为test的用户信息 SELECT * FROM mysql.user WHERE user = 'test';
查询结果说明
查询返回的字段含义如下:
- user:MySQL的用户名
- host:允许该用户登录的主机,localhost表示仅本地可登录,%表示任意主机可登录
- authentication_string:用户的密码加密后的字符串
- password_expired:密码是否过期,Y表示已过期,N表示未过期
- account_locked:账户是否被锁定,Y表示已锁定,N表示未锁定
注意事项
执行查询操作的MySQL账号需要有mysql库的查询权限,一般root账号默认拥有该权限。如果登录的账号没有对应权限,执行查询语句时会返回权限不足的错误提示。另外,修改用户信息后需要执行FLUSH PRIVILEGES;语句刷新权限配置,不过仅查询操作不需要执行该命令。