現在、pgadmin(Ubuntu 14.04で実行)からPostgresqlサーバー(9.3)に接続できません。 pg_lsclustersによるサーバーはポート5433にあります。
Ver Cluster Port Status Owner Data directory Log file
9.1 main 5432 online postgres /var/lib/postgresql/9.1/main /var/log/postgresql/postgresql-9.1-main.log
9.3 main 5433 online postgres /var/lib/postgresql/9.3/main /var/log/postgresql/postgresql-9.3-main.log
Pgadminで9.1サーバーに接続できますが、9.3サーバーにアクセスしようとすると、パスワードを認証できないというエラーが表示されます。
An error has occurred:
Error connecting to the server: FATAL: Passwort-Authentifizierung für Benutzer „postgres“ fehlgeschlagen
FATAL: Passwort-Authentifizierung für Benutzer „postgres“ fehlgeschlagen
9.1サーバーの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
9.3サーバーのpg_hba.confには以下が含まれます。
# Database administrative login by Unix domain socket
local all postgres md5
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all md5
# 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
違いは、最初の2つのアクティブな行の「ピア」または「md5」です。次にピアリングに切り替えてみます。私はソリューションへの正しい道を進んでいますか? (編集:いいえ、これは役に立ちませんでした)。
サーバーのデフォルトのパスワードを変更してみました:
$ Sudo -u postgres psql
psql (9.3.4, Server 9.1.13)
postgres=# \password
これがうまくいかなかった理由がわかりません。コマンドは9.1サーバーにのみ影響し、9.3サーバーには影響しません(古いサーバーを強制終了して9.3サーバーを適切に設定できれば幸いです)。
問題の一時的な解決策を見つけました。最初の2つのアクティブな行で、9.3サーバーのpg_hba.confを編集してtrustと記述しました。そして再起動後(Sudo service postgresql restart)pgadminを使用してサーバーに再び接続できます。欠点は、サーバーがパスワードで保護されていない可能性があることです(問題が発生した場合は別の質問を開きます)。
# Database administrative login by Unix domain socket
local all postgres trust
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all trust
# 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