2012-05-03 16 views
72

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

export PGPASSWORD=mypass and PGPASSWORD=mypass 

पासवर्ड एक \ उपयोग किया गया है लेकिन मैं सिंगल कोट्स PGPASS='mypass\' में यह encasing किया गया था और यह अभी भी प्रमाणित नहीं किया जाएगा।

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

pg_dump dbname -U username -Fc 

और मैं अभी भी

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

कि "... सहकर्मी प्रमाणीकरण ..." त्रुटि संदेश का हिस्सा मतलब है कि यह का उपयोग कर [पासवर्ड प्रमाणीकरण] (http://www.postgresql.org/docs/current/static/auth- नहीं कर रहा है ways.html # AUTH-PEER) बिल्कुल। –

उत्तर

149

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

समस्या यह है कि के आधार पर स्थानीय 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 प्रमाणीकरण का उपयोग करने के लिए निम्न की वजह से है जिसके लिए आवश्यक है postgres अपने वर्तमान प्रणाली मैच के लिए उपयोगकर्ता नाम उपयोगकर्ता नाम। दूसरी पंक्ति होस्टनाम का उपयोग कर कनेक्शन को संदर्भित करती है और आपको md5 विधि के माध्यम से पासवर्ड के साथ प्रमाणीकृत करने की अनुमति देगी।

मेरे पसंदीदा विकास कॉन्फ़िग

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

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

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

इससे मदद मिली। धन्यवाद – StarWars

+3

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

संबंधित मुद्दे