贝利信息

mysql如何查看用户权限_mysql权限查询方式

日期:2026-01-03 00:00 / 作者:P粉602998670
SHOW GRANTS最快查看当前用户权限,输出可执行授权语句;查他*限需指定完整'username'@'host';全局权限查mysql.user,数据库级查mysql.db,表级查mysql.tables_priv,角色权限需额外查mysql.role_edges。

直接查当前用户权限:用 SHOW GRANTS 最快

登录 MySQL 后,执行 SHOW GRANTS; 就能立刻看到你当前会话用户的全部权限语句。它不依赖权限表结构,也不需要额外 SELECT 权限,只要能连上就能用。

查其他用户权限:必须带 @'host' 才生效

想看别*限?得把用户名和主机名配对写全,否则报错 ERROR 1141 (42000): There is no such grant defined for user 'xxx' on host '%' —— 这是最常卡住的地方。

查权限底层字段:看 mysql.user 表里的 _priv 列

当你要批量判断某类权限是否开启(比如确认所有用户都禁用了 DROP),直接读 mysql.user 表比解析 SHOW GRANTS 输出更可靠。

细粒度权限在哪查:按作用域分表定位

MySQL 把权限按层级拆到不同系统表,查错表就看不到真实权限。比如给用户开了 myapp.* 的 SELECT,但在 mysql.user 里查不到这条记录。

实际排查时,别只盯着一个命令或一张表。权限叠加逻辑复杂,SHOW GRANTS 是第一眼答案,mysql.user + mysql.db 组合才是真相底稿。尤其在 MySQL 8.0 启用角色后,还得加查 mysql.role_edgesmysql.proxies_priv,漏掉任一环都可能误判。