postgresql - 从 PostgreSQL 导出所有内容

标签 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”登录,没有问题)

更新:我尝试使用不同于“postgres”的用户(在本例中为 rsmn):

pg_dumpall -U rsmn > out.sql

我有以下错误:

pg_dumpall: query failed: ERROR: permission dneied for relation pg_authid pg_dumpall: query was: SELECT oid, rolname, rolsuper, rolinherit, rolcreaterole, rolcreatedb, rolcanlogin, rolconnlimit, rolpassword, rolvalidunil, rolreplication, rolbypassrls, pg_catalog.shobj_description(oid, 'pg_authid') as rolcomment, rolname = current_user as is_current_user FROM pg_authid WHERE rolname !~ '^pg_' ORDER BY 2

用户权限(该用户是除“postgres”之外的唯一用户): enter image description here

最佳答案

对用户 rsmn 的尝试失败,因为它不是 super 用户并且无法导出用户密码。

还有待弄清楚为什么 pg_dumpall -U postgres 对你失败。

为此,第一件事就是检查 PostgreSQL 服务器日志。我不确定它在你的系统上的什么位置,你应该检查 postgresql.conf 中的设置(logging_collectorlog_destinationlog_directory 日志文件名)。可能它在 Windows 事件日志中。

日志消息会告诉你哪里出了问题。

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

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

关于postgresql - 从 PostgreSQL 导出所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43738437/

相关文章:

python - AWS Lambda S3 复制到 Postgres 成功但不复制数据

postgresql - 如果使用 Postgre,如何在 laravel 的查询构建器中使用 **distinct on()**?

django - 无法连接到服务器 : PgAdmin 4

postgresql - PGAdmin III 无法连接 AWS RDS

PostgreSQL - 禁用约束

java - 我是否应该在重复查询中使用 preparedStatement,其中 where 子句谓词的变化经常导致所选计划的变化

function - 在 postgresql 中使用变量作为字段名

sql - 来自 postgres 的奇怪的 sql 备份

sql - 修改 SQL 语句以追加表中的列

sql - Postgres 在指定时间触发