pg_dump を正しく認証するにはどうすればいいですか? 質問する

pg_dump を正しく認証するにはどうすればいいですか? 質問する

ホスト変数を使用してみました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インスタンスに対して開発する場合、ローカル認証方法を次のように変更します。trustpeerこれにより、パスワードのない任意のユーザーとしてローカル UNIX ソケット経由で postgres に接続できるようになります。これは、上記を に変更して postgres をリロードするだけで実行できますtrust

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

おすすめ記事