You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL如何通过单条命令查询所有用户的GRANTS权限信息

解答

MySQL没有提供原生单条SHOW GRANTS语法可以一次性返回所有用户的授权信息,但可以通过SQL拼接、命令行串联的方式实现单步操作获取全量权限,无需手动逐组替换user、host参数重复执行命令。

方式一:拼接生成全量授权查询语句

在MySQL交互端执行如下SQL,会自动为每一组user-host配对生成标准的SHOW GRANTS查询语句:

SELECT CONCAT('SHOW GRANTS FOR ''', user, '''@''', host, ''';') AS grant_query
FROM mysql.user;

将查询返回的所有结果批量执行,即可拿到所有用户的完整授权信息,无需手动逐个替换参数。

方式二:命令行单条指令直接输出全量结果

无需进入MySQL交互界面,直接在服务器Shell中执行如下命令,即可一次性打印所有用户的GRANTS结果:

mysql -u<你的登录账号> -p<你的登录密码> -N -e "SELECT CONCAT('SHOW GRANTS FOR ''',user,'''@''',host,''';') FROM mysql.user" | mysql -u<你的登录账号> -p<你的登录密码>

将命令中<你的登录账号>、<你的登录密码>替换为实际的MySQL登录凭证即可,该命令会先生成所有用户的授权查询语句,再自动传入MySQL执行,直接输出最终全量权限结果。

方式三:直接查询系统权限表聚合结果

如果不需要和SHOW GRANTS完全一致的输出格式,可以直接查询内置的权限视图聚合得到权限信息,全局权限查询示例:

SELECT
  grantee,
  GROUP_CONCAT(privilege_type ORDER BY privilege_type SEPARATOR ', ') AS global_privileges
FROM information_schema.USER_PRIVILEGES
GROUP BY grantee;

如需查询库级、表级、列级授权,可对应查询information_schema库下的SCHEMA_PRIVILEGES、TABLE_PRIVILEGES、COLUMN_PRIVILEGES视图即可。

注意:以上操作需要使用的数据库登录账号拥有读取mysql系统库、information_schema库的对应权限,否则会执行报错。

内容的提问来源于stack exchange,提问作者Sandeep

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 18:03:15