मैं ठीक से प्रमाणित करने के लिए pg_dump कैसे प्राप्त कर सकता हूं


99

मैंने होस्ट चर का उपयोग करने की कोशिश की है PGPASSWORDऔर .pgpassइन दोनों में से कोई भी मुझे डेटाबेस में प्रमाणित करने की अनुमति नहीं देगा। मैं chmod'घ .pgpassउपयुक्त अनुमतियों के लिए और भी करने की कोशिश की:

export PGPASSWORD=mypass and PGPASSWORD=mypass

पासवर्ड शामिल नहीं है, \लेकिन मैं इसे एकल उद्धरण में संलग्न कर रहा था PGPASS='mypass\'और यह अभी भी प्रमाणित नहीं करेगा।

मैं चल रहा हुँ:

pg_dump dbname -U username -Fc

और मुझे अभी भी प्राप्त है

pg_dump: [archiver (db)] connection to database "dbname" failed: FATAL:  Peer authentication failed for user "username"

1
यह "... सहकर्मी प्रमाणीकरण ..." त्रुटि संदेश का एक भाग का अर्थ है कि यह पासवर्ड प्रमाणीकरण का उपयोग नहीं कर रहा है ।
मिलन ए। राधदेव

जवाबों:


198

त्वरित समाधान

समस्या यह है कि यह peerआपके वर्तमान उपयोगकर्ता नाम के आधार पर स्थानीय प्रमाणीकरण करने की कोशिश कर रहा है । यदि आप एक पासवर्ड का उपयोग करना चाहते हैं तो आपको होस्टनाम निर्दिष्ट करना होगा -h

pg_dump dbname -U username -h localhost -F c

व्याख्या

यह आपके में निम्नलिखित के कारण है pg_hba.conf

local   all             all                                     peer
host    all             all             127.0.0.1/32            md5

यह बताता है कि Postgres peerस्थानीय उपयोगकर्ताओं के लिए प्रमाणीकरण का उपयोग करता है जिसके लिए अपने वर्तमान सिस्टम उपयोगकर्ता नाम से मेल खाने वाले उपयोगकर्ता नाम की आवश्यकता होती है। दूसरी पंक्ति एक होस्टनाम का उपयोग करके कनेक्शन को संदर्भित करती है और आपको md5विधि के माध्यम से पासवर्ड के साथ प्रमाणित करने की अनुमति देगा ।

मेरा पसंदीदा विकास विन्यास

नोट : यह केवल एकल-उपयोगकर्ता कार्यस्थानों पर उपयोग किया जाना चाहिए। यह एक उत्पादन या बहु-उपयोगकर्ता मशीन पर एक बड़ी सुरक्षा भेद्यता का कारण बन सकता है।

जब एक स्थानीय पोस्टग्रेज उदाहरण के खिलाफ विकसित हो रहा है, तो मुझे अपनी स्थानीय प्रमाणीकरण विधि को बदलना पसंद है trust। यह एक स्थानीय यूनिक्स सॉकेट के माध्यम से पोस्टग्रेज से कनेक्ट करने की अनुमति देगा, जिसमें कोई भी पासवर्ड नहीं है। इसे केवल peerऊपर से बदलकर trustऔर पोस्ट लोडिंग को फिर से लोड करके किया जा सकता है ।

# Don't require a password for local connections
local   all             all                                     trust

6
किसी के लिए यह अनिश्चित नहीं है कि आपकी गोपनीय फ़ाइल कहां है: उपयोग करें sudo locate pg_hba.conf- यह सूडो होना है क्योंकि पोस्टग्रेज उपयोगकर्ता निर्देशिका (मुझे लगता है) तक पहुंच के साथ एक ही होगा।
जुल्म

आपके आदेश ने मेरे लिए काम किया लेकिन मुझे यह पता नहीं चल पाया कि यह कहाँ है, या फ़ाइल का नाम क्या है, मैं उस फ़ाइल को कैसे ढूँढ सकता हूँ?
सोभन

अगर मैं अपने पोस्टग्रेज को डॉकर के अंदर कॉन्फ़िगर करता हूं, तो क्या यह सेटअप मेरे लोकलहोस्ट आने वाले कनेक्शन के लिए काम करेगा?
जैक ची से

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.