问题描述
我是Postgres的新手,我有一个具有多个数据库实例的数据库主机(HOST1),现在我已配置了另一个主机(HOST2)。
我在HOST1上使用pg_dump
创建了一个转储文件,并在HOST2上运行了pg_restore
。我看到还原无法在新主机HOST2中使用所需的GRANTS还原数据库角色。
我是否需要使用pgdumpall
从HOST1捕获具有相关GRANTS /特权的所有数据库角色,然后还原到HOST2?
解决方法
特别是您需要使用pg_dumpall -g
。这将仅捕获全局数据(角色,表空间等)。它不会捕获GRANT
输出中的pg_dump
信息。您遇到的问题是pg_restore
试图为数据库集群全局信息中不存在的GRANT
授予ROLEs
特权。