【问题标题】:Transferring database between two servers by piping通过管道在两台服务器之间传输数据库
【发布时间】:2019-10-26 03:05:26
【问题描述】:

我的旧 Postgresql 服务器接受远程连接。

我正在尝试将数据库从旧服务器转移到新服务器。在以 root 身份登录的新服务器上,我执行以下命令

pg_dump -h oldserverip -U mydb -C mydb | psql -h localhost -d mydb -U mydb

然后我会收到以下提示

"用户mydb的密码:密码:"

为什么要输入两次密码?

在我输入密码后,它在那里等待,没有任何反应。

知道问题出在哪里吗?

【问题讨论】:

    标签: postgresql psql


    【解决方案1】:

    因为您使用了两次-h 标志,所以您被要求输入两次密码。第二次被要求输入密码时,没有提示,因为管道 | 正在掩盖它。如果您只是“相信”那里有密码提示,然后输入密码,事情就会继续进行。

    但这可能不是您想要做的。如果两台服务器的密码相同,您可以在发出命令之前执行export PGPASSWORD=<password>。如果您对此感到不舒服,可以使用.pgpass 文件

    另一种选择是为pg_dumppsql 命令设置PGPASSWORD,如下所示:

    PGPASSWORD=<password> pg_dump -h oldserverip -U mydb -C mydb | PGPASSWORD=<otherpassword> psql -h localhost -d mydb -U mydb 
    

    最后,如果您的pg_hba.conf 有一个local all all trust 条目,您可以简单地省略psql 一侧的-h localhost 参数,系统只会提示您输入一次密码。

    任君挑选!

    披露:我为EnterpriseDB (EDB)工作

    【讨论】:

      最近更新 更多