2

我正在编写一个 shell 脚本,它将从一台服务器执行 pg_dump,然后它将转储恢复到另一台服务器上的数据库中。

要访问第一台服务器上的 Postgres 数据库,我使用 export PGPASSWORD 以避免出现密码提示。

当我在第二台服务器的 Postgres 数据库上执行还原时,系统会提示我输入用户密码。我尝试重新声明导出 PGPASSWORD(因为此数据库的密码不同),但这不起作用。我怀疑这与我必须加倍 SSH 跃点才能访问第二个数据库的事实有关:

export PGPASSWORD=******
perform pg_dump
...
export PGPASSWORD=********
cat out.sql | ssh -i .ssh/server1.pem root@dev.hostname.com "ssh -i .ssh/server2 \
0.0.0.0 psql -U postgres -h localhost -p 5432 DBNAME"

上述结果:

Password for user postgres:
psql: FATAL:  password authentication failed for user "postgres"

有没有人有什么建议?谢谢!

4

2 回答 2

3

您可以在主目录中创建一个名为 .pgpass 的文件,并在此处提供密码详细信息:

像 :

猫 .pgpass

主机名:端口:数据库:用户名:密码

本地主机:2323:test_db:test_user:test123**

试试这个。希望你的问题能得到解决。

于 2012-08-24T19:15:04.917 回答
0

.ssh/environment文件是您想要的。不过,我认为该文件需要在 server1 上,并且 server2 需要配置为允许用户修改他们的环境(通过PermitUserEnvironment选项。有关man ssh更多详细信息,请参见“环境”下。

于 2012-08-24T16:06:40.923 回答