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

发布时间 - 2026-01-03 00:00:00    点击率:
SHOW GRANTS最快查看当前用户权限,输出可执行授权语句;查他*限需指定完整'username'@'host';全局权限查mysql.user,数据库级查mysql.db,表级查mysql.tables_priv,角色权限需额外查mysql.role_edges。

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

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

  • 输出是可执行的授权语句(比如 GRANT SELECT, INSERT ON `testdb`.* TO 'app'@'%'),非常直观
  • 等价写法还有 SHOW GRANTS FOR CURRENT_USER;SHOW GRANTS FOR CURRENT_USER();,效果一样
  • 注意:SHOW GRANTS; 不显示“未显式授予但继承自角色”的权限(MySQL 8.0+ 角色机制下需额外查 mysql.role_edges

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

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

  • 例如查远程应用用户:SHOW GRANTS FOR 'api_user'@'%';
  • 查本地管理用户:SHOW GRANTS FOR 'admin'@'localhost';
  • 如果不确定 host 是什么,先查 SELECT User, Host FROM mysql.user WHERE User = 'api_user';
  • 没有 SUPER 或 SELECT 权限在 mysql 库时,SHOW GRANTS FOR ... 会拒绝执行

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

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

  • 关键字段如 Select_privDrop_privSuper_priv 值为 'Y''N'
  • 示例命令:
    SELECT User, Host, Select_priv, Insert_priv, Drop_priv, Super_priv FROM mysql.user WHERE User = 'backup_user'\G
  • ⚠️ 注意:这些只反映全局权限,数据库/表/列级权限不在这个表里 —— 它们分别存在 mysql.dbmysql.tables_privmysql.columns_priv

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

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

  • 数据库级权限(如 GRANT SELECT ON myapp.*)→ 查 mysql.db
    SELECT User, Host, Db, Select_priv, Insert_priv FROM mysql.db WHERE User = 'app_user' AND Db = 'myapp';
  • 表级权限(如 GRANT UPDATE ON myapp.logs)→ 查 mysql.tables_priv
  • 列级权限(极少见,但存在)→ 查 mysql.columns_priv
  • 所有这些表修改后,记得执行 FLUSH PRIVILEGES;(仅当你手动 UPDATE 系统表时才需要;用 GRANT 语句则自动生效)

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


# mysql  # app  # edge  # 作用域  # sql权限  # for  # select  # Error  # 继承  # 数据库  # 可执行  # 加查  # 这是  # 也不  # 就能  # 才是  # 你要  # 当你  # 但在  # 开了 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何实现API版本控制_Laravel版本化API设计方案  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置  Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】  Laravel如何使用Collections进行数据处理?(实用方法示例)  Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用  Laravel如何配置任务调度?(Cron Job示例)  Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件  Laravel如何使用Gate和Policy进行授权?(权限控制)  详解CentOS6.5 安装 MySQL5.1.71的方法  Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验  在线制作视频网站免费,都有哪些好的动漫网站?  Laravel如何使用Scope本地作用域_Laravel模型常用查询逻辑封装技巧【手册】  C++用Dijkstra(迪杰斯特拉)算法求最短路径  如何用y主机助手快速搭建网站?  如何在搬瓦工VPS快速搭建网站?  Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧  Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】  linux写shell需要注意的问题(必看)  Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作  网站制作大概多少钱一个,做一个平台网站大概多少钱?  Laravel怎么连接多个数据库_Laravel多数据库连接配置  如何安全更换建站之星模板并保留数据?  Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程  浅述节点的创建及常见功能的实现  实例解析angularjs的filter过滤器  Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南  北京的网站制作公司有哪些,哪个视频网站最好?  Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】  利用python获取某年中每个月的第一天和最后一天  如何生成腾讯云建站专用兑换码?  高防服务器如何保障网站安全无虞?  Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  Angular 表单中正确绑定输入值以确保提交与验证正常工作  VIVO手机上del键无效OnKeyListener不响应的原因及解决方法  黑客入侵网站服务器的常见手法有哪些?  PythonWeb开发入门教程_Flask快速构建Web应用  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  详解MySQL数据库的安装与密码配置  Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  如何在Windows虚拟主机上快速搭建网站?  ,南京靠谱的征婚网站?  Android仿QQ列表左滑删除操作  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  Windows10如何更改计算机工作组_Win10系统属性修改Workgroup  Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置  如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  Firefox Developer Edition开发者版本入口