Answers:
请注意,角色是在数据库集群级别定义的,因此在集群中的所有数据库中均有效。
由于pg_dump
转储单个数据库,因此您无法使用该实用程序提取角色。pg_dumpall --roles-only
您提议的命令将完成工作-但是您可能需要过滤其输出,以便仅在新集群中创建所需的角色。
角色与其他群集范围表一起存储在pg_authid
目录中,该目录物理上存储在data/global/
PostgreSQL安装的子文件夹中。您可以pg_authid
通过pg_roles
视图查询的内容。
注意:您将需要超级用户权限才能转储角色。否则,你会得到否认权限SELECT
上pg_authid
-甚至当一个超级用户授予SELECT
的权利,你会得到同样的错误。但是,在这种情况下,您可以通过pg_authid
直接查询将角色列出到角色中,从而列出角色,COPY
并进行一些魔术操作以创建必要的CREATE ROLE
和ALTER ROLE
语句。
pg_dumpall --roles-only
到所需的psql shell中。还是特定的CREATE ROLE
和ALTER ROLE
台词