मैं एक PostgreSQL (सुपर) उपयोगकर्ता को "पीयर" या "md5" प्रमाणीकरण विधियों के साथ प्रमाणित करने देना चाहूंगा, अधिमानतः दोनों मामलों में स्थानीय यूनिक्स डोमेन सॉकेट का उपयोग करना। समस्या यह है कि 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 डेटा प्रत्येक) और विशुद्ध रूप से केवल-पढ़ने के लिए। उन्हें हर रात हेरोल्ड सुपरयुजर द्वारा गिराया और फिर से बनाया जाता है। हेरोल्ड एक सिस्टम खाता भी है, इसलिए "सहकर्मी" पासवर्ड रहित क्रोनोजर आदि के लिए अच्छी तरह से काम करता है फिर डेटाबेस तक पहुँचने वाला एक वेब इंटरफ़ेस है: यह md5 प्रमाणीकरण का उपयोग करता है (सिस्टम उपयोगकर्ता वेबसर्वर, स्नातकोत्तर उपयोगकर्ता नाम, पासवर्ड और डीबी नाम द्वारा आपूर्ति की जाती है) आगंतुक)। अब मैं हेरोल्ड उपयोगकर्ता को वेब इंटरफेस पर लॉग इन करने देना चाहूंगा। हेरोल्ड के लिए "सहकर्मी" सेटिंग के कारण यह विफल हो जाता है।
वर्तमान वर्कअराउंड का उपयोग करते हुए webinterface को TCP से कनेक्ट करने देना है
# TYPE DATABASE USER ADDRESS METHOD
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
पहले उदाहरण में स्थानीय प्रविष्टियों के अलावा। यह काम करता है, लेकिन मैं यहां भी स्थानीय सॉकेट्स का उपयोग करूंगा - प्रदर्शन के लिए और एक आंत भावना के कारण ऐसा लगता है कि ऐसा करना सही है।
क्या यह संभव है? क्या हमारे लिए कोई बेहतर वर्कअराउंड है?