SHOW GRANTS FOR 报错 Access denied 是因当前用户无权查询他人权限仅 root 或具 SELECT ON mysql.user 权限者可执行查自身权限应使用 CURRENT_USER()% 与 localhost 账户权限独立GRANT 后须 FLUSH PRIVILEGES 生效。SHOW GRANTS FOR 报错 Access denied for user你执行 SHOW GRANTS FOR userhost 时被拒绝大概率不是语法问题而是当前登录用户没权限查别人。MySQL 默认只允许用户查自己的权限SHOW GRANTS 不带 FOR 时才允许。必须用 root 或拥有 SELECT ON mysql.user SHOW DATABASES 权限的账号执行带 FOR 的语句普通用户即使对自己查也得加引号SHOW GRANTS FOR CURRENT_USER() 比 SHOW GRANTS FOR me% 更可靠如果目标用户不存在会报错 ERROR 1141 (42000): There is no such grant defined for user ...不是权限问题是名字写错了SHOW GRANTS 返回结果里 % 和 localhost 不等价MySQL 把 user% 和 userlocalhost 当作两个完全独立的账户权限互不影响。很多线上问题就出在这儿——你以为给 % 授权了结果应用连的是 localhost根本没生效。SHOW GRANTS FOR app% 和 SHOW GRANTS FOR applocalhost 必须分别执行不能省略本地命令行连 MySQL 默认走 socket实际认证用的是 localhost不是 127.0.0.1想强制走 TCP得显式加 -h 127.0.0.1权限列表里出现 GRANT USAGE ON *.* 表示该用户存在但没显式授权不是漏查是真的空GRANT 语句和 SHOW GRANTS 输出不一致看是否刷权限执行 GRANT 后立刻 SHOW GRANTS 看不到新权限通常不是缓存而是权限表没重载。 ARTi.PiCS ARTi.PiCS是一款由AI驱动的虚拟头像生产器可以生成200多个不同风格的酷炫虚拟头像