pg_hba.conf
別名: HBA / host-based authentication / ホストベース認証
PostgreSQL が接続要求ごとに「どの接続元・どのユーザー・どのデータベースを、どの認証方式で通すか」を上から順に判定するクライアント認証の設定ファイル。
公開:
定義
pg_hba.conf は PostgreSQL のクライアント認証を制御する設定ファイルである。
HBA は host-based authentication(ホストベース認証)の略。
サーバはデータディレクトリに置かれたこのファイルを読み、接続要求ごとに「接続種別・対象データベース・ユーザー名・接続元アドレス」の 4 条件がすべて一致する最初の行を選び、その行に書かれた認証方式で可否を決める。
詳細
1 行は 種別 データベース ユーザー 接続元 認証方式 の並びで書く。
種別は Unix ドメインソケット経由なら local、TCP/IP 経由なら host を使う。
認証方式でよく使うのは、OS のログインユーザー名とデータベースのロール名が一致することだけを求める peer、パスワードをチャレンジレスポンスで検証する scram-sha-256、無条件で通す trust の 3 つである。
判定は 上から順で、最初に一致した 1 行だけが使われる。
一致した行の認証に失敗しても、下の行へフォールバックはしない。
編集を反映するには設定の再読み込みが要り、pg_ctl reload または SELECT pg_reload_conf(); を実行する。
よくある誤解
- パスワードさえ設定すれば通る:
peerの行に当たっている場合、パスワードは最初から参照されない。PostgreSQL で「Peer authentication failed for user」が出て接続できない はこの型である。 - 行は下に足せば効く: 上に広い範囲の行があるとそちらが先に一致するため、順序そのものが設定の一部である。
- 反映にはサーバ再起動が要る: reload で足りる。
再起動は不要である。
関連
接続そのものが確立できない場合は pg_hba.conf ではなく postgresql.conf の listen_addresses や port の側を疑う。
認証まで到達しているかどうかが切り分けの分岐点になる。