.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
空でない場合は名前、またはhostaddr
IP アドレスです。それ以外の場合、行は警告なしで無視されます。残念ながら、これらのファイルにはログが記録されないため、これで問題が解決しない場合は、自分でコンパイルしてデバッガで実行する必要がありpsql
ますlibpq
。
.pgpass ファイルの所有者を確認してください。.pgpass ファイルを sudo で作成したことを知るために、30 分も無駄になりました。ユーザーと場所のコマンドはchown postgres:postgres /var/lib/pgsql/.pgpass
.
私の場合、すでにPGPASSWORD環境変数を(間違ったパスワードに)設定していたので、psql
中身の代わりにそれを選んでいました.pgpass