できない.dev

pg_hba.conf

別名: HBA / host-based authentication / ホストベース認証

PostgreSQL が接続要求ごとに「どの接続元・どのユーザー・どのデータベースを、どの認証方式で通すか」を上から順に判定するクライアント認証の設定ファイル。

公開:

定義

pg_hba.confPostgreSQL のクライアント認証を制御する設定ファイルである。
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.conflisten_addressesport の側を疑う。
認証まで到達しているかどうかが切り分けの分岐点になる。

この記事は役立ちましたか?