Rob*_*ark 40 postgresql dump role restore
角色存储在集群中的什么位置,如何转储它们?
我做了一个 db 的 pg_dump 然后将它加载到不同的集群中,但我收到了很多这些错误:
psql:mydump.sql:3621: ERROR: role "myrole" does not exist
Run Code Online (Sandbox Code Playgroud)
所以显然我的数据库的转储不包括角色。我尝试转储“postgres”数据库,但我也没有看到那里的角色。
我需要使用pg_dumpall --roles-only吗?
Postgresql 版本 8.4.8 和 9.1.4 操作系统:Ubuntu 11.04 Natty
dez*_*zso 51
请注意,角色是在数据库集群级别定义的,因此在集群中的所有数据库中都有效。
由于pg_dump转储单个数据库,因此您无法使用该实用程序提取角色。pg_dumpall --roles-only您建议的命令将完成工作 - 但是您可能需要过滤其输出,以便在新集群中仅创建所需的角色。
角色存储在pg_authid目录中,目录data/global/与其他集群范围的表一起存储在PostgreSQL 安装的子文件夹中。可以pg_authid通过pg_roles视图查询内容。
注意:您将需要超级用户权限才能转储角色。否则,你会得到否认权限SELECT上pg_authid-甚至当一个超级用户授予SELECT的权利,你会得到同样的错误。但是,在这种情况下,您可以通过pg_authid直接查询列出角色,将COPY其添加到文件中并使用一些魔法来创建必要的CREATE ROLEandALTER ROLE语句。
| 归档时间: |
|
| 查看次数: |
41230 次 |
| 最近记录: |