हम्म्म ...
यदि आप pgAdminIII में उपयोगकर्ता नाम और पासवर्ड के साथ कनेक्ट कर सकते हैं, लेकिन आप के साथ कनेक्ट नहीं कर सकते हैं psql
तो वे दो प्रोग्राम संभवतः डेटाबेस से अलग तरीके से कनेक्ट हो रहे हैं।
[यदि आप अलग-अलग डेटाबेस से जुड़ रहे हैं, तो पहले उसी डेटाबेस से कनेक्ट करने का प्रयास करें। निचे देखो।]
से PostgreSQL: प्रलेखन: 9.3: psql :
यदि आप होस्ट नाम को छोड़ देते हैं, तो psq एक Unix- डोमेन सॉकेट के माध्यम से स्थानीय होस्ट पर एक सर्वर से जुड़ जाएगा, या टीसीपी / आईपी के माध्यम से उन मशीनों पर लोकलहोस्ट करने के लिए होगा जिनके पास यूनिक्स-डोमेन सॉकेट नहीं है।
आप की तरह कुछ नहीं चला रहे हैं psql ... -h host_name ...
, और आप Ubuntu चला रहे हैं, psql
एक यूनिक्स डोमेन सॉकेट के माध्यम से जुड़ जाना चाहिए, ताकि PostgreSQL शायद के लिए पासवर्ड प्रमाणीकरण तरीकों में से एक देने के लिए कॉन्फ़िगर नहीं है postgres उपयोगकर्ता।
आप इसे चलाकर देख सकते हैं:
sudo -u postgres psql
यदि उपरोक्त कार्य करता है, तो आपका सर्वर संभवतः पोस्टग्रेज उपयोगकर्ता द्वारा स्थानीय कनेक्शन के लिए सहकर्मी प्रमाणीकरण का उपयोग करने के लिए कॉन्फ़िगर किया गया है , अर्थात आपके उपयोगकर्ता नाम के लिए ओएस से यह पुष्टि करने के लिए कि आप पोस्टग्रेज हैं ।
तो यह शायद आपका pg_hba.conf फ़ाइल है
फ़ाइल का पूरा पथ कुछ इस तरह होगा /etc/postgresql/9.3/main/pg_hba.conf । आप इसे उदाहरण के लिए देख सकते हैं sudo cat /etc/postgresql/9.3/main/pg_hba.conf | more
।
यदि आप अपने psql
आदेश में होस्ट नाम को छोड़ रहे हैं , तो आपको अपने pg_hba.conf फ़ाइल में निम्न प्रविष्टि जोड़ने पर सक्षम होना चाहिए :
# Connection type Database User IP addresses Method
local all postgres md5
[ Pg_hba.conf फ़ाइल में पंक्तियाँ आरंभ होती हैं #
।]
यदि आप अपने आदेश में होस्ट नाम शामिल करते हैंpsql
, तो इस प्रविष्टि को इसके स्थान पर जोड़ें:
# Connection type Database User IP addresses Method
host all postgres 127.0.0.1/32 md5
आपके द्वारा कनेक्शन के लिए किसी अन्य प्रविष्टियों के मिलान से पहले आपको प्रविष्टि डालने की आवश्यकता है psql
। अगर संदेह है कि इसे कहां रखा जाए, तो इसे पहले अन-कमेंटेड लाइन से पहले रखें।
Pg_hba.conf के बारे में अधिक
से PostgreSQL: प्रलेखन: 9.3: pg_hba.conf फ़ाइल [बोल्ड जोर मेरा]:
एक मिलान कनेक्शन प्रकार , क्लाइंट पता , अनुरोधित डेटाबेस और उपयोगकर्ता नाम के साथ पहला रिकॉर्ड प्रमाणीकरण करने के लिए उपयोग किया जाता है। कोई "फ़ॉल-थ्रू" या "बैकअप" नहीं है: यदि एक रिकॉर्ड चुना जाता है और प्रमाणीकरण विफल हो जाता है, तो बाद के रिकॉर्ड पर विचार नहीं किया जाता है। यदि कोई रिकॉर्ड मेल नहीं खाता है, तो पहुँच अस्वीकृत है।
नोट करें कि रिकॉर्ड प्रमाणीकरण विधि से मेल नहीं खाते हैं । तो, अगर आपकी pg_hba.conf फ़ाइल में निम्न प्रविष्टि है:
# Connection type Database User IP addresses Method
local all postgres peer
तब आप इसके माध्यम से कनेक्ट नहीं कर पाएंगे:
psql -u postgres
जब तक कि इनमें से एक प्रविष्टि पूर्व प्रविष्टि के ऊपर आपकी pg_hba.conf फ़ाइल में नहीं है :
# Connection type Database User IP addresses Method
local all postgres md5
local all postgres password # Unencrypted!
local all all md5
local all all password # Unencrypted!