Saya ingin membiarkan pengguna PostgreSQL (super) diautentikasi dengan metode otentikasi "peer" atau "md5", lebih disukai menggunakan soket domain Unix lokal dalam kedua kasus. Masalahnya adalah urutan entri dalam pg_hba.conf penting, dan kecocokan pertama akan diterapkan.
Apa yang saya punya:
# TYPE DATABASE USER ADDRESS METHOD
local all harold peer
local all all md5
Apa yang saya inginkan (sintaks tidak valid):
# TYPE DATABASE USER ADDRESS METHOD
local all harold peer-or-md5
local all all md5
Berikut ini beberapa detail lebih lanjut tentang lingkungan yang ingin kami gunakan di:
Pada server khusus ini, semua database relatif kecil (masing-masing <10MB data) dan hanya baca-saja. Mereka dijatuhkan dan diciptakan kembali setiap malam oleh superuser harold. harold juga merupakan akun sistem, jadi "rekan" berfungsi dengan baik untuk cronjobs tanpa kata sandi, dll. Lalu ada antarmuka web yang mengakses basis data: ini menggunakan otentikasi md5 (pengguna sistem adalah server web, nama pengguna pg, kata sandi, dan nama db disediakan oleh pengunjung). Sekarang saya ingin membiarkan pengguna harold masuk melalui antarmuka web juga. Ini gagal karena pengaturan "rekan" untuk harold.
Solusi saat ini adalah membiarkan antarmuka web terhubung melalui TCP, menggunakan
# TYPE DATABASE USER ADDRESS METHOD
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
selain entri lokal pada contoh pertama. Ini berfungsi, tetapi saya lebih suka menggunakan soket lokal di sini juga - untuk kinerja dan karena firasat bahwa itu sepertinya hal yang tepat untuk dilakukan.
Apakah ini mungkin? Apakah ada solusi yang lebih baik untuk kita?