
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 インスタンスがありましたが、動作しませんでした。理由はわかりませんが、それはまた別の機会に。