Postgresql 通过管道在两台服务器之间传输数据库

Postgresql 通过管道在两台服务器之间传输数据库,postgresql,psql,Postgresql,Psql,我的老式Postgresql服务器接受远程连接 我正在尝试将数据库从旧服务器转移到新服务器。在以root用户身份登录的新服务器上,我执行以下命令 pg_dump -h oldserverip -U mydb -C mydb | psql -h localhost -d mydb -U mydb 然后,我会得到以下提示 “用户mydb的密码:密码:” 为什么它要两次询问密码 在我输入密码后,它在那里等待,什么也没发生 知道问题出在哪里吗?因为您使用了两次-h标志,所以会要求您输入两次密码。第二次

我的老式Postgresql服务器接受远程连接

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

pg_dump -h oldserverip -U mydb -C mydb | psql -h localhost -d mydb -U mydb
然后,我会得到以下提示

“用户mydb的密码:密码:”

为什么它要两次询问密码

在我输入密码后,它在那里等待,什么也没发生


知道问题出在哪里吗?

因为您使用了两次
-h
标志,所以会要求您输入两次密码。第二次询问密码时,没有提示,因为管道
正在屏蔽密码。如果你只是“相信”密码提示在那里,并且你输入了密码,事情就会继续

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

另一个选项是为
pg_dump
psql
命令设置
PGPASSWORD
,如下所示:

PGPASSWORD=<password> pg_dump -h oldserverip -U mydb -C mydb | PGPASSWORD=<otherpassword> psql -h localhost -d mydb -U mydb 
PGPASSWORD=pg_dump-h oldserverip-U mydb-C mydb | PGPASSWORD=psql-h localhost-d mydb-U mydb
最后,如果您的
pg_hba.conf
有一个
local all trust
条目,您只需省略
psql
端的
-h localhost
参数,系统只会提示您输入一次密码

你挑吧

披露:我为