1. ホーム
  2. postgresql

[解決済み] pg_dump を正しく認証するにはどうしたらいいですか?

2022-09-28 22:59:27

質問

私はホスト変数 PGPASSWORD.pgpass の2つがあり、どちらもデータベースへの認証ができません。私は chmod 'd .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"

どのように解決するのですか?

クイック解決法

問題は、ローカルで実行しようとしている 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