ホスト変数を使用してみましたPGPASSWORD
が、.pgpass
どちらもデータベースへの認証を許可しません。適切な権限を設定し、次のことも試しましたchmod
:.pgpass
export PGPASSWORD=mypass and PGPASSWORD=mypass
パスワードには が含まれています\
が、一重引用符で囲んでいたためPGPASS='mypass\'
、認証されません。
実行中:
pg_dump dbname -U username -Fc
そして私はまだ受け取る
pg_dump: [archiver (db)] connection to database "dbname" failed: FATAL: Peer authentication failed for user "username"
ベストアンサー1
迅速な解決策
問題は、ローカルで実行しようとしていることですpeer
現在のユーザー名に基づいて認証します。パスワードを使用する場合は、ホスト名を指定する必要があります-h
。
pg_dump dbname -U username -h localhost -F c
説明
これはあなたの次の理由によるものですpg_hba.conf
local all all peer
host all all 127.0.0.1/32 md5
これはPostgrespeer
にローカルユーザの認証を使用するように指示します。この認証では、postgresのユーザ名が現在のシステムユーザ名と一致する必要があります。2行目はホスト名を使用した接続を指し、md5
方法。
私の好みの開発構成
注記: これは、シングルユーザー ワークステーションでのみ使用してください。これにより、実稼働マシンまたはマルチユーザー マシンで重大なセキュリティ脆弱性が発生する可能性があります。
ローカルのPostgresインスタンスに対して開発する場合、ローカル認証方法を次のように変更します。trust
peer
これにより、パスワードのない任意のユーザーとしてローカル UNIX ソケット経由で postgres に接続できるようになります。これは、上記を に変更して postgres をリロードするだけで実行できますtrust
。
# Don't require a password for local connections
local all all trust