Postgresql 复制数据库的权限被拒绝

Postgresql 复制数据库的权限被拒绝,postgresql,roles,postgresql-9.5,Postgresql,Roles,Postgresql 9.5,我仍然习惯于博士后角色的概念 我正在尝试创建一个角色,migrator,该角色将能够从生产数据库中读取数据,并将其用作制作后台数据库和开发数据库的模板 我创建了这个角色migrator最初是这样的: 创建角色迁移器登录加密密码“” 并继续限制对prod数据库的访问: REVOKE ALL ON DATABASE prod FROM PUBLIC; GRANT CONNECT ON DATABASE prod TO migrator; /* switch to prod database */ G

我仍然习惯于博士后角色的概念

我正在尝试创建一个角色,
migrator
,该角色将能够从生产数据库中读取数据,并将其用作制作后台数据库和开发数据库的模板

我创建了这个角色
migrator
最初是这样的:

创建角色迁移器登录加密密码“”

并继续限制对prod数据库的访问:

REVOKE ALL ON DATABASE prod FROM PUBLIC;
GRANT CONNECT ON DATABASE prod TO migrator;
/* switch to prod database */
GRANT USAGE ON SCHEMA public TO migrator;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO migrator;
GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO migrator;
在尝试
创建数据库阶段模板prod之后出现错误时,我必须更改角色以创建数据库:

ALTER ROLE migrator CREATEDB;
然后再试一次。这次我得到了一个错误:
错误:复制数据库“prod”的权限被拒绝

我再次尝试将复制权限添加到migrator角色(不确定这是否正确,因为手册中说这是一个非常高的权限)

然而,我仍然得到同样的错误


更新:我发现这与谁拥有数据库有关;然而,我的问题仍然存在。我如何允许另一个具有“刚读”权限的角色也能够复制数据库?我查看了角色继承,但乍一看,继承角色将获得与父角色相同的权限。

除非登录角色是所有者或:

datistemplate可以设置为指示数据库将用作创建数据库的模板。如果设置了此标志,则任何具有CREATEDB权限的用户都可以克隆数据库;如果未设置,则只有超级用户和数据库所有者才能克隆它

ALTER ROLE migrator REPLICATION;