pg_dumpを適切に認証する方法


98

ホスト変数PGPASSWORDを使用してみましたが.pgpass、これらの2つのどちらもデータベースへの認証を許可しません。私が持っているchmodD「を.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
エラーメッセージの「...ピア認証...」の部分は、パスワード認証をまったく使用していないことを意味します
Milen A. Radev 2012年

回答:


196

クイックソリューション

問題は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

これにより、Postgresにpeerローカルユーザーの認証を使用するように指示します。これには、現在のシステムユーザー名と一致するpostgresユーザー名が必要です。2行目はホスト名を使用した接続を参照し、md5メソッドを介してパスワードで認証できるようにします。

私の優先開発構成

:これは、シングルユーザーワークステーションでのみ使用してください。これにより、プロダクションマシンまたはマルチユーザーマシンに重大なセキュリティの脆弱性が生じる可能性があります。

ローカルのpostgresインスタンスに対して開発する場合、ローカルの認証方法をに変更したいと思いtrustます。これにより、パスワードのない任意のユーザーとして、ローカルのUNIXソケットを介してpostgresに接続できます。これは単にpeer上記に変更しtrustてpostgresをリロードすることで実行できます。

# Don't require a password for local connections
local   all             all                                     trust

6
confファイルの場所がわからない場合は、使用してくださいsudo locate pg_hba.conf。postgresユーザーがディレクトリにアクセスできる唯一のユーザーになるため、sudoにする必要があります(私はそう思います)。
jcollum 2014年

あなたのコマンドは私にとってはうまくいきましたが、それがどこにあるのか、またはファイルの名前は何なのかわかりません。どうすればそのファイルを見つけることができますか?
ソブハン

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.