我正在尝试设置 PostgreSQL 的内置逻辑复制,从一个 AWS RDS 实例到另一个实例。为此创建了一个新用户 -
CREATE ROLE my_replication WITH
NOSUPERUSER
NOCREATEDB
NOCREATEROLE
INHERIT
LOGIN
NOREPLICATION
NOBYPASSRLS
CONNECTION LIMIT -1;
GRANT rds_replication TO my_replication;
当我登录数据库并执行时
CREATE PUBLICATION my_publication FOR TABLES IN SCHEMA schema1, schema2....;
我收到错误
ERROR: permission denied for database mydb
我已经作为 my_replication 连接到 mydb。 PostgreSQL 版本是 16.3。还需要哪些额外权限?
我能够通过
修复该特定错误 GRANT CREATE ON DATABASE mydb TO my_replication;
但事实证明,更多的特权是必要的。 “要将表添加到发布中,调用用户必须拥有该表的所有权。FOR ALL TABLES 和 FOR TABLES IN SCHEMA 子句要求调用用户是超级用户。” - 来自文档