.pgpassホームディレクトリに次のようなファイルを作成しました
localhost:5432:somedb:someuser:somepass
somedbディレクトリを作成し、そこにpg_dump を置くシェル スクリプトを使用しています。
mkdir directory
pg_dump somedb > directory/somefile.dump
それでもパスワードの入力を求められます。
ここで間違いはどこですか?
.pgpassホームディレクトリに次のようなファイルを作成しました
localhost:5432:somedb:someuser:somepass
somedbディレクトリを作成し、そこにpg_dump を置くシェル スクリプトを使用しています。
mkdir directory
pg_dump somedb > directory/somefile.dump
それでもパスワードの入力を求められます。
ここで間違いはどこですか?
ホスト:5432:somedb:someuser:somepass
sudo chmod 600 .pgpass
sudo chown login_username:login_username .pgpass
export PGPASSFILE='/home/user/.pgpass'
データベースに接続して確認します。
psql -h ホスト -U someuser somedb
パスワードの入力を求めるプロンプトは表示されず、postgresql にログインしました。
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、警告なしに無視されます。ユーザーが所有していること、およびすべての祖先ディレクトリがユーザーによって実行可能であることを確認してください。hostname:port:database:username:password(パスワード ファイル) passwordFromFile。各フィールド (パスワード以外) は*. :andの文字は(パスワードであっても)エスケープ\する必要があります。パスワードは行末または行末で終わり、、、、または以外の任意のバイトを含めることができます。正しくフォーマットされていない行、またはホストとユーザーが一致しない行は、コメントであるかのように警告なしで無視されます。\:\\:\r\n\0*. チェックされるサーバーの「pwhost」は、host空でない場合は名前、またはhostaddrIP アドレスです。それ以外の場合、行は警告なしで無視されます。残念ながら、これらのファイルにはログが記録されないため、これで問題が解決しない場合は、自分でコンパイルしてデバッガで実行する必要がありpsqlますlibpq。
.pgpass ファイルの所有者を確認してください。.pgpass ファイルを sudo で作成したことを知るために、30 分も無駄になりました。ユーザーと場所のコマンドはchown postgres:postgres /var/lib/pgsql/.pgpass.
私の場合、すでにPGPASSWORD環境変数を(間違ったパスワードに)設定していたので、psql中身の代わりにそれを選んでいました.pgpass