pgsqlは接続できるが、pgadminは接続できない

pgsqlは接続できるが、pgadminは接続できない

1 つのデータベースを所有する 1 つのロールのみ、ドメイン UNIX ソケット、パスワードなし

postgres@luciol-essai:~$ more /etc/postgresql/8.4/main/pg_hba.conf | grep jppstphp
local   essais_php  jppstphp                       trust
postgres@luciol-essai:~$ 

psql で成功:

envol@luciol-essai:~$ psql -U jppstphp essais_php
psql (8.4.15)
essais_php=> 

pgadmin3 の失敗:

これがエラーです。

Error connecting to the server: FATAL:  authentification Ident ?chou?e pour l'utilisateur << jppstphp >>

答え1

PgAdmin-III はlocalhostまたはに接続するように指示されている127.0.0.1ため TCP/IP を使用しているようですが、psql にはホスト指定が与えられていないため UNIX ソケット ( local) を使用しています。

pgadmin3 のホスト名フィールドを空白のままにするか、別のpg_hba.confエントリを追加しますhost essais_php jppstphp 127.0.0.1/32 trust

答え2

ファイル全体を確認する必要がありますpg_hba.conf。ディレクティブの順序は重要です。デフォルトの行が残っていると思います:

local   all         all                               ident

この行が に関する特定の行の前にある場合jppstphp、postgresql サーバーはまず UNIX ユーザー名 ( のようです) からユーザーを識別しようとしますenvol。postgres ユーザー/ロール として接続しようとしているため、これは失敗しますjppstphp

私の仮定が正しければ、上記の行 (およびおそらくmd5パスワード認証の同様のエントリ) を削除するか、jppstphpその前に自分の行を配置すると、ローカル ソケットを介して接続できるようになります。

ローカル ソケットを介して接続するには、ホスト フィールドを空白のままにしておくだけで済みます。

答え3

コマンドライン経由で psql に接続し、pgAdmin が AWS の RDS に接続しないという同じ問題が発生しました。RDS はパブリック アクセス可能に設定していました。ACL とセキュリティ グループが完全にオープンになっていることを確認しましたが、それでも問題が解決しないため、次の操作を実行しました。 sudo find . -name *.conf 次にsudo nano ./data/pg_hba.conf 、pg_hba.conf ファイルのディレクティブの先頭に追加するとhost all all 0.0.0.0/0 md5 、pgAdmin が自動的にログインしました。

ちなみに、私の RDS はデフォルトの VPC にありました。デフォルト以外の VPC に、デフォルトの VPC と同じセキュリティ グループ、ACL、セキュリティ グループ設定を持つ同一の RDS インスタンスがありましたが、動作しませんでした。理由はわかりませんが、それはまた別の機会に。

関連情報