PHP Webサーバー上のスクリプトから、またはPGAdmin3を使用して、リモートでデータベースに問題なく接続できます。
残念ながら、サーバー自体でローカルにpg_dumpバックアップを実行しようとすると、次のようになります。
pg_dump --username=postgres -W omega | gzip > omega.10.10.13.gz
pg_dump: [archiver (db)] connection to database "omega" failed: FATAL: Peer authentication failed for user "postgres"
以前はデータベースにパスワードがまったくありませんでしたが、これを回避するために実際にpostgresユーザーにパスワードを与えました。それでもさいころ、ピア認証は毎回失敗します。
これがpg_hba.confファイルの設定です。これを修正するために何ができるか教えてください。データベースでバックアップを実行したいのですが。
# Database administrative login by Unix domain socket
local all postgres peer
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
Host all all 127.0.0.1/32 md5
# IPv6 local connections:
Host all all ::1/128 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local replication postgres peer
#Host replication postgres 127.0.0.1/32 md5
#Host replication postgres ::1/128 md5
Host all all 70.89.205.250/24 md5
Host all all 23.21.112.163/24 md5
Host all all 24.188.1.163/24 md5
Pg_hba.confで、次の行を変更します。
local all all peer
に:
local all all password
その後、パスワードを使用してローカルにログインできます。
Postgresクライアントの奇妙な奇妙な点は、リモートまたはスクリプト内のクライアントは通常、そのアドレスを使用してサーバーに接続し、その後パスワードによって認証されますが、コマンドラインクライアントを介して同じマシンから接続すると、ピアを使用しようとします認証すると、そのエラーが発生します。これから answer ホストを指定するだけで修正できることがわかりました:
pg_dump -h 127.0.0.1 --username=postgres -W omega | gzip > omega.10.10.13.gz
これは、あなたのPHPスクリプトが内部的に行っていることです。グローバル設定を台無しにせず、あなたもそれについて知りたいと思ったので、私はこの修正を好みます。
システムユーザーpostgres
としてスクリプトを実行するか、pg_hba.conf
ファイルによると、ピア認証が設定された対応するdbユーザーがいます。彼のコメントで @ Milenはすでに示唆 のように。または、できれば .pgpass
file を使用して、システムユーザーのパスワードなしのアクセスを設定します。
この密接に関連する回答の詳細:
PostgreSQLスケジュールデータベースバックアップ 。