2

あるサーバーから pg_dump を実行するシェル スクリプトを作成しており、後で別のサーバーのデータベースにダンプを復元します。

最初のサーバーの Postgres データベースにアクセスするには、エクスポート PGPASSWORD を使用してパスワード プロンプトを回避します。

2 番目のサーバーの Postgres データベースで復元を実行すると、ユーザー パスワードの入力を求められます。export PGPASSWORD を再宣言しようとしましたが (このデータベースのパスワードが異なるため)、これは機能しません。2番目のデータベースにアクセスするためにSSHホップを2倍にする必要があるという事実と関係があるのではないかと思います:

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 に答える