MySQL RDS root用户无法为用户授予角色的Error 1227问题求助
解决MySQL RDS中root用户授予角色时权限不足的问题
问题重现
使用MySQL 8版本的RDS实例,通过root用户执行角色分配操作时触发错误:
Error running SQL (GRANT 'test_role' TO 'test_user'@'%'): Error 1227: Access denied; you need (at least one of) the WITH ADMIN, ROLE_ADMIN, SUPER privilege(s) for this operation
直接执行以下SQL语句同样报错:
CREATE ROLE 'test_role'; GRANT SELECT, EXECUTE ON checkpoint_gg.* TO 'test_role'; CREATE USER 'test_user'@'%' IDENTIFIED BY 'password'; GRANT 'test_role' TO 'test_user'@'%';
查看root用户权限,确认已拥有CREATE ROLE、DROP ROLE,但缺少ROLE_ADMIN权限。
原因分析
AWS RDS的root用户并非完全意义上的超级用户,默认未分配ROLE_ADMIN权限——而MySQL 8中,将角色授予用户必须具备该权限(或SUPER权限,不推荐在RDS中使用SUPER)。
解决方案
- 为root用户添加ROLE_ADMIN权限:
GRANT ROLE_ADMIN ON *.* TO 'root'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;
- 重新执行角色授予语句:
GRANT 'test_role' TO 'test_user'@'%';
- 若使用Terraform,可通过
mysql_exec资源先完成root用户的权限补充,再执行后续的角色、用户创建及授权操作。
内容的提问来源于stack exchange,提问作者Kay
相关产品推荐
相关产品推荐

