PostgreSQL(スーパー)ユーザーが「peer」または「md5」認証方法で認証されるようにしたいと思います。できれば両方のケースでローカルUnixドメインソケットを使用してください。問題は、pg_hba.confのエントリの順序が重要であり、最初の一致が適用されることです。
私が持っているもの:
# TYPE DATABASE USER ADDRESS METHOD
local all harold peer
local all all md5
欲しいもの(無効な構文):
# TYPE DATABASE USER ADDRESS METHOD
local all harold peer-or-md5
local all all md5
これを使用したい環境の詳細を以下に示します。
この特定のサーバーでは、すべてのデータベースは比較的小さく(それぞれ10 MB未満のデータ)、純粋に読み取り専用です。それらはハロルドのスーパーユーザーによって毎晩ドロップされ、再作成されます。haroldはシステムアカウントでもあるため、「peer」はパスワードなしのcronjobなどでうまく機能します。次に、データベースにアクセスするWebインターフェイスがあります。これはmd5認証を使用します(システムユーザーはwebserver、pgユーザー名、パスワード、db訪問者)。ここで、haroldユーザーにWebインターフェースからもログインさせたいと思います。これは、ハロルドの「ピア」設定のために失敗します。
現在の回避策は、WebインターフェイスがTCP経由で接続できるようにすることです。
# TYPE DATABASE USER ADDRESS METHOD
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
最初の例のローカルエントリに加えて。これは機能しますが、ここでもローカルソケットを使用します-パフォーマンスのために、そしてそれが正しいことのように思えるという直感のためです。
これは可能ですか?改善策はありますか?