AWS RDS MySQL主从复制报错:需SUPER或REPLICATION_SLAVE_ADMIN权限
AWS RDS MySQL 8.0主从复制权限问题
问题背景
使用MySQL Workbench登录AWS RDS(MySQL 8.0.35),管理员账号为admin@'%'。此前已在两台Windows Server间搭建主从复制,现需改为**AWS RDS(主库)→ Windows Server MySQL(从库)**的架构。在从库执行以下复制命令时触发权限错误:
CHANGE MASTER TO MASTER_HOST='123.123.12.12', MASTER_USER='user', MASTER_PORT=3306, MASTER_PASSWORD='123456', MASTER_LOG_FILE='binlog.000004', MASTER_LOG_POS=7947 FOR CHANNEL '123.123.12.12'; START SLAVE FOR CHANNEL '123.123.12.12';
错误信息:
Error Code: 1227. Access denied; you need (at least one of) the SUPER or REPLICATION_SLAVE_ADMIN privilege(s) for this operation
当前RDS中admin为管理员用户,rdsadmin仅本地可用,且RDS未给admin授予SUPER权限。咨询以下问题:
- 是否可通过参数组或其他方式为
admin用户授予SUPER/REPLICATION_SLAVE_ADMIN权限? - 若不可行,是否无法在RDS上搭建主从复制?
问题解答
1. 关于SUPER/REPLICATION_SLAVE_ADMIN权限的授予
SUPER权限:AWS RDS中SUPER权限仅保留给内置的rdsadmin用户,用户创建的管理员账号(如admin)无法获取该权限,也无法通过参数组或其他方式授予,这是RDS的安全限制。REPLICATION_SLAVE_ADMIN权限:这是MySQL 8.0引入的权限,用于替代SUPER在复制操作中的部分功能。对于RDS中的用户,你可以通过GRANT命令直接给admin授予该权限(前提是执行命令的账号拥有GRANT OPTION权限,比如admin自身):
注意:该权限仅影响在RDS实例上执行的复制相关操作,你的报错实际是在从库(Windows Server MySQL)执行命令时触发的,需要检查从库端执行命令的用户是否拥有对应权限。GRANT REPLICATION_SLAVE_ADMIN ON *.* TO 'admin'@'%'; FLUSH PRIVILEGES;
2. RDS作为主库搭建主从复制的可行性
完全可以搭建,你的报错并非因为RDS无法作为主库,而是从库执行CHANGE MASTER TO的用户缺少权限:
- 确保RDS主库已开启二进制日志(RDS默认开启,若未开启可通过修改参数组的
log_bin参数启用); - 在RDS主库创建专门的复制用户,授予
REPLICATION SLAVE权限:CREATE USER 'repl_user'@'从库IP' IDENTIFIED BY '密码'; GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'从库IP'; FLUSH PRIVILEGES; - 在从库(Windows Server MySQL)上,使用拥有
REPLICATION_SLAVE_ADMIN或SUPER权限的用户执行CHANGE MASTER TO命令(比如从库的root用户,或给执行命令的用户单独授予该权限); - 完成配置后启动从库同步即可。
RDS作为主库完全支持向外搭建主从复制,核心是确保从库端用户有足够权限,同时RDS主库的复制用户拥有正确权限。
内容的提问来源于stack exchange,提问作者Soon Santos
相关产品推荐
相关产品推荐

