次のような.pgpass
ファイルをホームディレクトリに作成しました
localhost:5432:somedb:someuser:somepass
私はディレクトリを作成し、そこにsomedb
のpg_dumpを配置するシェルスクリプトを使用しています。
mkdir directory
pg_dump somedb > directory/somefile.dump
それでもパスワードの入力を求められます。
ここの間違いはどこですか?
ホストとユーザーを指定してみましたか?
pg_dump -U someuser -h localhost somedb > directory/somefile.dump
質問への回答は既に完了していますが、.pgpassファイルの権限が適切に設定されていない場合もあります。世界とグループのアクセスを禁止する必要があります。
/bin/chmod 0600 ~/.pgpass
1)内容を含む.pgpassファイルを作成する
ホスト:5432:somedb:someuser:somepass
2)コマンドを使用して権限を設定する
Sudo chmod 600 .pgpass
3)ファイル所有者を、ログインに使用したのと同じユーザーとして設定します。
Sudo chown login_username:login_username .pgpass
4)PGPASSFILE環境変数を設定します。
pGPASSFILE = '/ home/user/.pgpass'をエクスポートします
次に、データベースに接続して確認します。
psql -hホスト-U someuser somedb
パスワードの入力を求められず、postgresqlにログインしません。
.pgpassファイルの所有者を確認してください。私がSudoで.pgpassファイルを作成したことを確認するために、ちょうど30分を失った。ユーザーと場所のコマンドはchown postgres:postgres /var/lib/pgsql/.pgpass
。
psql
( startup.c )呼び出し PQconnectdbParams
( fe-connect.c )、次に passwordFromFile
が呼び出されます。次に、pgpassファイルが使用されることを確認するためのチェックリストを示します。
--password
/-W
およびpassword=
が設定されていないことを確認します。そうでない場合、pgpassファイルは使用されません。PGPASSWORD
が設定されていないことを確認してください(echo $PGPASSWORD
)。そうでない場合、pgpassファイルは使用されません。$PGPASSFILE
またはデフォルト~/.pgpass
または%APPDATA%\postgresql\pgpass.conf
)chmod 600 ~/.pgpass
);そうでない場合、psql
は警告を出力します。psql
は警告を出力します。psql
ユーザー(例:cat ~/.pgpass
)によって読み取り可能であることを確認してください。それ以外の場合、psql
は警告なしに無視します。それがユーザーによって所有されていること、およびそのすべての祖先ディレクトリーがユーザーによって実行可能であることを確認してください。*
であることを確認してください。チェックされるサーバーの「pwhost」は、空でない場合はHost
名、またはhostaddr
ipアドレスです。それ以外の場合、ファイルは警告なしに無視されます。残念ながら、これらのファイルにはログが記録されないため、これが役に立たない場合は、psql
とlibpq
を自分でコンパイルし、デバッガーで実行する必要があります。