Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 在shell脚本中访问两个不同的Postgres数据库时出现密码问题_Linux_Postgresql_Shell_Scripting_Postgresql 9.1 - Fatal编程技术网

Linux 在shell脚本中访问两个不同的Postgres数据库时出现密码问题

Linux 在shell脚本中访问两个不同的Postgres数据库时出现密码问题,linux,postgresql,shell,scripting,postgresql-9.1,Linux,Postgresql,Shell,Scripting,Postgresql 9.1,我正在编写一个shell脚本,它将从一台服务器执行pg_转储,然后将转储恢复到另一台服务器上的数据库中 为了访问第一台服务器上的Postgres数据库,我使用export PGPASSWORD以避免出现密码提示 当我在第二台服务器的Postgres数据库上执行恢复时,系统会提示我输入用户密码。我试图重新声明export PGPASSWORD(因为此数据库的密码不同),但这不起作用。我怀疑这与我必须加倍SSH跃点才能访问第二个数据库有关: export PGPASSWORD=****** perf

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

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

当我在第二台服务器的Postgres数据库上执行恢复时,系统会提示我输入用户密码。我试图重新声明export 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"

有人有什么建议吗?谢谢

您需要
.ssh/environment
文件。不过,我认为该文件需要位于server1上,server2需要配置为允许用户修改其环境(通过
PermitUserEnvironment
选项)。请参阅“环境”下的
manssh
有关更多详细信息。

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

比如:

cat.pgpass

主机名:端口:数据库:用户名:密码 localhost:2323:test\u db:test\u用户:test123**

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