ฉันต้องการให้ผู้ใช้ PostgreSQL (super) ได้รับการรับรองความถูกต้องด้วยวิธีการรับรองความถูกต้อง "เพียร์" หรือ "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
นี่คือรายละเอียดเพิ่มเติมเกี่ยวกับสภาพแวดล้อมที่เราต้องการใช้ใน:
บนเซิร์ฟเวอร์นี้ฐานข้อมูลทั้งหมดมีขนาดค่อนข้างเล็ก (แต่ละข้อมูล <10MB) และอ่านอย่างเดียว พวกมันจะถูกดร็อปและสร้างขึ้นใหม่ทุกคืนโดย superuser แฮโรลด์ แฮโรลด์ยังเป็นบัญชีระบบดังนั้น "เพียร์" ก็ใช้งานได้ดีสำหรับรหัสผ่านแบบไร้รหัส cronjobs เป็นต้นจากนั้นก็มีเว็บอินเตอร์เฟสที่เข้าถึงฐานข้อมูล: ใช้การพิสูจน์ตัวตน md5 (ผู้ใช้ระบบคือเว็บเซิร์ฟเวอร์, ชื่อผู้ใช้ pg, รหัสผ่านและชื่อ db ผู้เยี่ยมชม) ตอนนี้ฉันต้องการให้ผู้ใช้แฮโรลด์เข้าสู่ระบบผ่านทางเว็บอินเตอร์เฟสเช่นกัน สิ่งนี้ล้มเหลวเนื่องจากการตั้งค่า "เพียร์" สำหรับแฮโรลด์
วิธีแก้ปัญหาปัจจุบันคือการอนุญาตให้เว็บอินเตอร์เฟสเชื่อมต่อผ่าน TCP โดยใช้
# TYPE DATABASE USER ADDRESS METHOD
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
นอกเหนือจากรายการโลคัลในตัวอย่างแรก ใช้งานได้ แต่ฉันควรใช้ซ็อกเก็ตท้องถิ่นที่นี่เช่นกันเพื่อการแสดงและเนื่องจากความรู้สึกที่ดูเหมือนว่าจะทำสิ่งที่ถูกต้อง
เป็นไปได้ไหม มีวิธีแก้ปัญหาที่ดีกว่าสำหรับเราหรือไม่?