从PostgreSQL导出所有内容

时间:2017-05-02 12:53:56

标签: postgresql pgadmin

我想从PostgreSQL中导出所有内容(用户,角色,对象定义,数据)并将其还原到另一台服务器。我怎么能这样做?

我尝试使用

pg_dumpall -U postgres -g > out.sql

但文件 out.sql 为空。有人可以解释一下为什么会这样吗?

当我尝试:

pg_dumpall -U postgres > out.sql

PostgreSQL只是不想接受" postgres"的密码。

我更喜欢从(windows)命令行完成这项工作(这不是问题,使用linux命令,我可以翻译它们)。如果有很好的pgAdmin方法,我也很乐意学习它。

P.S:我的密码" postgres"是正确的(我尝试使用" psql -U postgres&#34登录;并且没有问题)

更新:我尝试的用户不同于" postgres"(在这种情况下 rsmn ):

pg_dumpall -U rsmn > out.sql

我有以下错误:

  

pg_dumpall:查询失败:错误:关系的权限被拒绝   pg_authid pg_dumpall:查询是:SELECT oid,rolname,rolsuper,   rolinherit,rolcreaterole,rolcreatedb,rolcanlogin,rolconnlimit,   rolpassword,rolvalidunil,rolreplication,rolbypassrls,   pg_catalog.shobj_description(oid,' pg_authid')作为rolcomment,rolname   = current_user as is_current_user FROM pg_authid WHERE rolname!〜' ^ pg _'订购2

用户权限(此用户只有一个" postgres"): enter image description here

2 个答案:

答案 0 :(得分:0)

如果您尝试在* nix下执行此操作并且您的服务器已安装在当地,则您可能不会使用ident模式而不是password

sudo su postgres
pg_dumpall > out.sql

答案 1 :(得分:0)

用户rsmn的尝试失败,因为它不是超级用户,无法导出用户密码。

仍然要弄清楚为什么pg_dumpall -U postgres失败了。

为此,首先要检查PostgreSQL服务器日志。我不确定您系统的位置,您应该检查postgresql.conflogging_collectorlog_destinationlog_directorylog_filename)中的设置。可能它在Windows事件日志中。

日志消息会告诉您出了什么问题。

这可能是pg_hba.conf文件的问题 - 如果是这样,现代的PostgreSQL版本会告诉你使用了哪一行。

出于调试目的,您可以尝试将相关行更改为trust身份验证,以便不要求密码(但不要这样做,或者每个人都可以作为用户postgres连接密码!)。