115

ホスト変数PGPASSWORDを使用してみ.pgpassましたが、これら 2 つのいずれもデータベースへの認証を許可しません。私はchmod適切.pgpassな権限を取得し、次のことも試しました:

export PGPASSWORD=mypass and PGPASSWORD=mypass

パスワードには a\が含まれていますが、一重引用符PGPASS='mypass\'で囲んでいましたが、それでも認証されません。

私は走っています:

pg_dump dbname -U username -Fc

そして私はまだ受け取ります

pg_dump: [archiver (db)] connection to database "dbname" failed: FATAL:  Peer authentication failed for user "username"
4

2 に答える 2

224

クイックソリューション

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のユーザー名が現在のシステムユーザー名と一致する必要があります。md52行目は、ホスト名を使用した接続を示しており、メソッドを介してパスワードで認証できるようになります。

私の好みの開発構成

:これは、シングルユーザーワークステーションでのみ使用する必要があります。これにより、実稼働マシンまたはマルチユーザーマシンに重大なセキュリティの脆弱性が生じる可能性があります。

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

# Don't require a password for local connections
local   all             all                                     trust
于 2012-05-03T19:34:17.070 に答える