AWS RDS PostgreSQL逻辑复制权限问题:创建Publication报错
解决AWS RDS PostgreSQL逻辑复制创建Publication时的权限问题
在AWS RDS PostgreSQL 16.3实例中,创建逻辑复制专用用户my_replication并授予rds_replication角色后,执行CREATE PUBLICATION语句时出现错误:
ERROR: permission denied for database mydb
需要补充以下两类权限:
1. 数据库层面的CREATE权限
创建Publication要求用户拥有目标数据库的CREATE权限,使用具备超级权限的用户(如rds_superuser角色用户)执行:
GRANT CREATE ON DATABASE mydb TO my_replication;
2. 发布对象的访问权限
复制用户需要能访问要发布的Schema和表,确保逻辑复制可以读取表数据:
-- 授予Schema的USAGE权限 GRANT USAGE ON SCHEMA schema1, schema2 TO my_replication; -- 授予现有表的SELECT权限 GRANT SELECT ON ALL TABLES IN SCHEMA schema1, schema2 TO my_replication; -- 可选:为后续在Schema中新建的表自动授予SELECT权限 ALTER DEFAULT PRIVILEGES IN SCHEMA schema1, schema2 GRANT SELECT ON TABLES TO my_replication;
权限说明
rds_replication角色仅提供AWS RDS层面的复制系统权限,不包含数据库的创建权限和用户表的访问权限,因此需要手动补充。- PostgreSQL 16中创建Publication要求用户必须拥有目标数据库的CREATE权限,同时对所有要发布的表具备SELECT权限(逻辑复制需要读取表内容生成变更日志)。
内容的提问来源于stack exchange,提问作者Jayadevan
相关产品推荐
相关产品推荐

