解決策 1:
これは、Postgres が Ident プロトコルを使用してユーザーを認証しようとしているが、できないことを意味します。 ID 認証は次のように機能します:
- データベース 'db' に対するデータベース ロール 'foo' を持っています
- あなたの
pg_hba.conf
ファイル (/etc/postgres-something/main
内) ) は、データベースdb
に接続するためのプロトコルとして「Ident」を定義します 特定のホストから接続しているユーザー向け - 接続を確立する UNIX ユーザー名は「foo」です
- ユーザーが接続しているマシンで実行されている Ident サーバーは、ユーザー名が本当に「foo」であることを確認します
考えられる原因と解決策:
<オール>sudo apt-get install oidentd
).
Ident サーバーはありますが、データベースの役割はありません 接続しようとしている名前と一致します (上記の例では「foo」)。スーパーユーザー権限で何らかの方法でデータベースに接続して作成し、 CREATE ROLE foo
を実行します .または、 /etc/postgresql/.../main/pg_ident.conf
にエントリを追加します (または /var/lib/pgsql/12/data
またはどこでも)
シェルのユーザー名が一致しない可能性があります データベースの役割。接続中に Ident サーバーに接続し、正しいポート番号を渡すことで、これをテストできる場合があります。
本当はパスワードで接続したいかもしれません 、Ident ではありません。 pg_hba.conf
を編集します 適切にファイルします。たとえば、次のように変更します:
host all all 127.0.0.1/32 ident
へ
host all all 127.0.0.1/32 md5
解決策 2:
原因は不明ですが、これで解決しました:
pg_hba.conf
で
これに変更:
<ブロック引用>ホスト すべて すべて 127.0.0.1/32 md5
正確なエラー:Caused by: org.postgresql.util.PSQLException: FATAL: Ident authentication failed for user "postgres"
解決策 3:
CentOS では、次の行を /var/lib/pgsql/9.3/data/pg_hba.conf
に追加します。 :
host all all 127.0.0.1/32 trust
他のエントリをコメントアウトします。
もちろん、この設定は違います 安全ですが、私のような開発用 VM をいじるだけなら、おそらく問題ありません...