pg_hba.conf接続拒否の原因と対処法

冒頭まとめ PostgreSQLへの接続時に次のエラーが出る場合、pg_hba.confに接続条件と一致する規則がありません。 FATAL: no pg_hba.conf entry for host "192.168.1.10", user "app", database "mydb", no encryption エラーに表示された接続元IP、利用者名、データベース名、暗号化状態を確認し、この4つに合う規則を探してください。規則を追加する場合は、接続元を必要な範囲に絞り、scram-sha-256など適切な認証方式を指定します。 Linuxなどでは、ファイルの保存後に設定の再読み込みが必要です。Microsoft Windowsでは、変更内容がその後の新しい接続へ直ちに適用されます。 no pg_hba.conf entry for hostの意味 pg_hba.confは、PostgreSQLへ接続できる利用者、データベース、接続元、認証方式を定めるファイルです。HBAはhost-based authenticationの略で、接続元に基づく認証設定を指します。 PostgreSQLは、接続種別、接続元アドレス、要求されたデータベース、利用者名の4つを上から順に照合します。一致する規則が1つもなければ、接続を拒否してno pg_hba.conf entry for hostを返します。 このエラーのSQLSTATEは28000、条件名はinvalid_authorization_specificationです。パスワードが違う場合の28P01とは別のエラーです。PostgreSQL公式のエラーコード一覧で確認できます。 エラー文の4項目を確認する エラー文には、原因を絞るための情報が含まれています。 host "192.168.1.10" user "app" database "mydb" no encryption hostの値は、PostgreSQLから見た接続元IPです。利用者が想定していたIPではなく、エラーに表示された値を基準にしてください。 userとdatabaseは、接続時に指定されたPostgreSQLの利用者名とデータベース名です。似た名前の別環境へ接続していないかも確認します。 末尾のno encryptionは暗号化されていない接続です。環境によってはSSL encryptionまたはGSS encryptionと表示されます。これは単なる補足ではなく、hostsslなどの接続種別と照合する条件です。 pg_hba.confの場所を確認する 編集すべきファイルの場所は、接続済みの管理用セッションから確認できます。 SHOW hba_file; PostgreSQLは認証設定ファイルを別の場所へ移せるため、想像した場所のファイルを編集すると反映されないことがあります。必ず実際に使用されているパスを確認してください。 接続できる管理用セッションがない場合は、サーバーの設定管理、コンテナのマウント設定、クラウドサービスの管理画面などで使用中の認証設定を確認します。管理サービスではpg_hba.confを直接編集できない場合があります。 読み込める規則と書式エラーを調べる pg_hba_file_rulesを使うと、pg_hba.confの規則と書式エラーを確認できます。既定ではスーパーユーザーだけが参照できます。 SELECT rule_number, file_name, line_number, type, database, user_name, address, auth_method, error FROM pg_hba_file_rules ORDER BY file_name, line_number; errorがNULLではない行には、読み取れない理由が入ります。誤った行では、line_numberとerror以外が空になることがあります。 ...

2026年9月20日 · ErrorLog