在MySQL数据库的日常管理和维护工作中,查看用户权限是基础且重要的操作,无论是排查权限相关的报错,还是做权限审计,都需要准确获取用户的权限信息。MySQL提供了多种查看用户权限的途径,适配不同的使用场景。

使用SHOW GRANTS命令查看指定用户权限
SHOW GRANTS是MySQL官方提供的查看用户权限的专用命令,使用起来非常简单,能够直接返回指定用户的所有权限语句,可读性很强。
命令的基本语法如下:
-- 查看当前登录用户的权限 SHOW GRANTS; -- 查看指定用户的权限,用户名和主机名需要用单引号包裹,格式为 '用户名'@'主机名' SHOW GRANTS FOR 'test_user'@'localhost';
执行上述命令后,会返回类似如下的结果:
+---------------------------------------------------------------------+ | Grants for test_user@localhost | +---------------------------------------------------------------------+ | GRANT SELECT, INSERT ON `test_db`.* TO 'test_user'@'localhost' | | GRANT USAGE ON *.* TO 'test_user'@'localhost' | +---------------------------------------------------------------------+
结果中的每一行都对应一条权限授予语句,USAGE表示用户没有全局权限,只是可以登录数据库。如果需要查看的用户不存在,执行命令会返回错误提示。
查询mysql系统库的user表获取用户全局权限
MySQL的用户权限信息存储在系统库mysql的多个表中,其中user表存储的是用户的全局权限信息,也就是对所有数据库的权限配置。
我们可以直接查询user表获取指定用户的全局权限,首先查看user表的结构,了解权限相关的字段:
-- 查看mysql.user表的字段结构,权限相关字段通常以_priv结尾 DESC mysql.user;
查询指定用户的全局权限的示例代码如下:
-- 查询test_user@localhost用户的全局权限,1表示有该权限,0表示没有
SELECT user, host,
select_priv, insert_priv, update_priv, delete_priv,
create_priv, drop_priv, grant_priv
FROM mysql.user
WHERE user = 'test_user' AND host = 'localhost';
这种方式可以清晰看到每个具体权限的开启状态,适合需要批量核对多个用户权限的场景。
查询information_schema库的权限相关表
除了mysql库,information_schema库中也有权限相关的表,比如USER_PRIVILEGES、SCHEMA_PRIVILEGES、TABLE_PRIVILEGES等,这些表的信息更规范,适合做权限统计。
查看用户全局权限的示例:
-- 查看所有用户的全局权限信息 SELECT * FROM information_schema.USER_PRIVILEGES WHERE GRANTEE LIKE '%test_user%';
如果需要查看用户对某个具体数据库的权限,可以查询SCHEMA_PRIVILEGES表:
-- 查看test_user对test_db数据库的权限 SELECT * FROM information_schema.SCHEMA_PRIVILEGES WHERE GRANTEE = "'test_user'@'localhost'" AND TABLE_SCHEMA = 'test_db';
不同查看方式的适用场景
可以根据实际需求选择不同的查看方式:
- 如果只是快速确认某个用户的权限,优先使用
SHOW GRANTS命令,返回结果直观易懂。 - 如果需要统计所有用户的权限情况,或者需要导出权限数据做分析,优先查询系统库的相关表。
- 如果需要区分全局权限、数据库权限、表权限等不同层级的权限,可以结合查询mysql库的db表、tables_priv表等。
注意事项
查看用户权限的操作需要当前登录的用户有足够的权限,通常只有root用户或者拥有mysql库查询权限的用户才能执行相关查询操作。如果当前用户权限不足,执行命令会返回权限错误提示。另外,修改用户权限后,新的权限不会立即生效,需要执行FLUSH PRIVILEGES;命令刷新权限缓存,之后再查看的权限才是更新后的状态。
MySQL查看用户权限user表SHOW GRANTSinformation_schema修改时间:2026-06-22 02:42:26