show grants仅显示当前用户权限,查他人需显式指定用户;identified with表示认证插件而非权限;仅grant usage说明无实际操作权限;改表后须flush privileges刷新缓存。

SHOW GRANTS 只显示当前用户权限,不查其他用户
执行 SHOW GRANTS 不带参数时,默认只返回当前登录用户的权限列表,不是所有用户,也不是 root 的权限。想查别人,必须显式指定用户,否则容易误判权限范围。
- 查当前用户:
SHOW GRANTS; - 查指定用户:
SHOW GRANTS FOR 'username'@'host';(注意'username'@'host'必须和mysql.user表里记录完全一致,包括引号) - 如果提示
Access denied,说明你没被授予SELECT权限访问mysql.user表,或没SHOW GRANTS权限本身
输出结果里 IDENTIFIED WITH 是认证插件,不是权限
SHOW GRANTS 返回的每条语句开头常有类似 GRANT USAGE ON *.* TO 'u1'@'%' IDENTIFIED WITH caching_sha2_password AS '$A$...' 这样的内容。这里的 IDENTIFIED WITH 表示该用户使用的身份验证插件和密码哈希方式,和授权无关,别把它当成某类“USAGE 权限”的体现。
-
USAGE本身代表“无任何数据库级权限”,仅允许连接,常作为占位符出现在CREATE USER后的默认输出中 - 真正有效的权限从下一行的
GRANT SELECT, INSERT...开始算 - 如果只看到
GRANT USAGE,基本等于这个用户目前啥也干不了
权限未生效?检查是否执行了 FLUSH PRIVILEGES
通过直接修改 mysql.user 或 mysql.db 表(比如用 UPDATE)来改权限后,SHOW GRANTS 可能仍显示旧结果——因为 MySQL Server 缓存了权限数据,需要手动刷新。
将产品展示、购物管理、资金管理等功能相结合,并提供了简易的操作、丰富的功能和完善的权限管理,为用户提供了一个低成本、高效率的网上商城建设方案包含PowerEasy CMS普及版,主要功能模块:文章频道、下载频道、图片频道、留言频道、采集管理、商城模块、商城日常操作模块500个订单限制(超出限制后只能查看和删除,不能进行其他处理) 无订单处理权限分配功能(只有超级管理员才能处理订单)
- 改表后必须执行:
FLUSH PRIVILEGES; - 用
GRANT/REVOKE语句改权限则自动刷新,无需再FLUSH - 如果
SHOW GRANTS和你刚执行的GRANT不一致,先确认是否在正确的 host 上登录(比如'user'@'localhost'和'user'@'%'是两个不同账号)
SHOW GRANTS 输出不能直接复用为 GRANT 语句
虽然 SHOW GRANTS 返回的是类 SQL 的字符串,但多数情况下不能原样复制粘贴去执行。常见问题包括:
- 输出中可能含
WITH GRANT OPTION,但目标用户未必有该能力;若强行执行会报错ERROR 1045 (28000): Access denied - 某些版本输出带反斜杠转义(如
\_),直接运行会语法错误 - 权限作用域(如
ON `db`.`tbl`)里的反引号在低版本 MySQL 中不被识别,需手动去掉 - 更稳妥的做法是用
mysqldump --no-data --skip-triggers --compact mysql user db tables_priv导出权限元数据
mysql> SHOW GRANTS FOR 'app_user'@'10.20.%'; +---------------------------------------------------------------------+ | Grants for app_user@10.20.% | +---------------------------------------------------------------------+ | GRANT USAGE ON *.* TO 'app_user'@'10.20.%' | | GRANT SELECT, UPDATE ON `orders`.* TO 'app_user'@'10.20.%' | | GRANT INSERT ON `logs`.* TO 'app_user'@'10.20.%' WITH GRANT OPTION | +---------------------------------------------------------------------+
权限细节藏在每一行的 ON 后面的作用域和逗号分隔的权限名里,而不是整条语句看起来那样“完整”。漏看一个 `、少扫一眼 @'host',就可能配错环境。









