MySQL授予GRANT权限时出现Permission Denied错误求助
MySQL 5.6授予GRANT权限失败的原因分析
核心原因:你的账号缺少GRANT OPTION权限
在MySQL中,要将权限(包括授予他人权限的能力)转授给其他用户,你的账号必须本身拥有GRANT OPTION权限——这是专门用来允许账号将自身拥有的权限授予其他用户的关键权限,不会随常规的数据/结构权限自动附带。
排查与验证步骤
- 查看自身账号的权限详情:执行以下命令(替换
your_user和your_host为你的账号信息):
如果结果中没有包含SHOW GRANTS FOR 'your_user'@'your_host';WITH GRANT OPTION的行,说明你确实缺少该权限。 - 注意权限范围限制:即使你拥有部分权限的
GRANT OPTION,也只能转授你自身已拥有的权限范围。比如你仅拥有db1.*的权限并附带GRANT OPTION,就无法给其他用户授予*.*全局范围的GRANT权限。
解决方法
需要由拥有超级权限的账号(如root)为你的账号添加GRANT OPTION权限,执行类似命令:
-- 授予全局范围的GRANT OPTION权限 GRANT ALL PRIVILEGES ON *.* TO 'your_user'@'your_host' WITH GRANT OPTION; FLUSH PRIVILEGES;
如果不需要全局权限,可指定具体数据库/表范围:
-- 仅针对mydb数据库授予权限及GRANT OPTION GRANT SELECT, INSERT ON `mydb`.* TO 'your_user'@'your_host' WITH GRANT OPTION; FLUSH PRIVILEGES;
额外提示
当你给其他用户授予权限时,如果希望该用户也能转授权限,需要在授予命令末尾显式添加WITH GRANT OPTION,例如:
GRANT SELECT ON `mydb`.* TO 'new_user'@'%' WITH GRANT OPTION;
内容的提问来源于stack exchange,提问作者Bigbob556677
相关产品推荐
相关产品推荐

