psql: FATAL: उपयोगकर्ता के लिए प्रमाणीकरण विफल "पोस्टग्रेज"


372

मैंने अपने Ubuntu Karmic बॉक्स पर PostgreSQL और pgAdminIII स्थापित किए हैं।

मैं सफलतापूर्वक pgAdminIII (यानी कनेक्ट / लॉग ऑन) का उपयोग करने में सक्षम हूं, हालांकि जब मैं कमांड लाइन (psql का उपयोग करते हुए) पर एक ही उपयोगकर्ता नाम / pwd का उपयोग करके सर्वर में प्रवेश करने का प्रयास करता हूं, तो मुझे त्रुटि मिलती है:

psql: FATAL:  Ident authentication failed for user "postgres"

अब किसी को भी इस मुद्दे को हल करने के लिए कैसे करता है?


जवाबों:


194

क्या आपने pg_hba.conf में उचित सेटिंग्स सेट की हैं?

Https://help.ubuntu.com/stable/serverguide/postgresql.html इसे कैसे करें देखें ।


36
यह मेरे लिए काम नहीं करता है। मैंने इस पर घंटों बिताए हैं! मैं बस अपने टर्मिनल में psql कमांड चलाना चाहता हूं। फ़ाइल को ऐसा करने के लिए मुझे क्या करने की आवश्यकता है ??
सीन

54
@ सीन आपको कुछ इस तरह की जरूरत है जैसे '
सूदो

8
'मत भूलना?' psql पर हर बयान के अंत में। मूर्खतापूर्ण लगता है लेकिन ऐसा होता है।
ओमर्सिन

42
@Robert: "postgresql सबसे अधिक उपयोगकर्ता मित्रहीन db है"? ओरेकल कुछ दिन का प्रयास कुछ परिप्रेक्ष्य पाने के लिए ... :)
mivk

5
रेल का उपयोग करने वालों के लिए, मुझे pg_hba.conf को सेट करना था, और 'पहचान' को 'पासवर्ड' में बदलना था। इसे भरोसे में बदलने से काम नहीं चला।
अबे पेट्रिलो

412

निम्न चरण Ubuntu 12.04 पर 9.1 पोस्टग्रेस की एक नई स्थापना के लिए काम करते हैं। (Ubuntu 14.04 पर भी 9.3.9 पोस्टग्रेट्स के लिए काम किया।)

डिफ़ॉल्ट रूप से, postgres 'postgres' नाम का एक उपयोगकर्ता बनाता है। हम उसके रूप में लॉग इन करते हैं, और उसे एक पासवर्ड देते हैं।

$ sudo -u postgres psql
\password
Enter password: ...
...

psqlटाइप करके \qया लॉगआउट करेंctrl+d । फिर हम 'पोस्टग्रेज' के रूप में जुड़ते हैं। -h localhostभाग महत्वपूर्ण है : यह बताता है psql, और नहीं एक सहकर्मी कनेक्शन (जो पासवर्ड के बारे में परवाह नहीं करता है) के आधार पर ग्राहक है कि हम एक TCP कनेक्शन (जो पासवर्ड प्रमाणीकरण का उपयोग करने के लिए कॉन्फ़िगर किया गया) का उपयोग कर कनेक्ट करना चाहते हैं।

$ psql -U postgres -h localhost

13
यदि आप सेट PGHOST=localhostकरते हैं तो आपको -hहर बार विकल्प को निर्दिष्ट करने की आवश्यकता नहीं है । यह अन्य pg_*कमांड जैसे कि के साथ भी काम करता है pg_dump
समीर


2
PostgreSQL के साथ डेबियन पर Mediawiki स्थापित करने में सक्षम करने के लिए यह आवश्यक था।
mivk

2 साल बाद, और मुझे मैक पर भी ऐसा करने की जरूरत है।
मानव

1
खराब है क्योंकि सुरक्षा मुद्दा है, यहाँ देखें: serverfault.com/questions/110154/…
एर्डिनि आइ जूल

161

फ़ाइल संपादित करें /etc/postgresql/8.4/main/pg_hba.confऔर बदलें identया peerइनमें से किसी एक md5या trust, आप इसे पासवर्ड के लिए अपने स्वयं के कंप्यूटर या नहीं पर पूछना चाहता हूँ कि क्या पर निर्भर करता है। फिर कॉन्फ़िगरेशन फ़ाइल को फिर से लोड करें:

/etc/init.d/postgresql reload

4
एक कमांड रिस्टार्ट पोस्टग्रैसकल: /etc/init.d/postgresql रिस्टार्ट
टायलर लॉन्ग

14
क्यों एक पुनः लोड जब एक पुनः लोड आप सभी की जरूरत है?
फ्रैंक हाइकेन

इस स्थिति में: "/etc/init.d/postgresql-8.4 reload"
shaytac

1
यहाँ एक ने मेरे लिए काम किया। सहकर्मी से md5 में परिवर्तन पर्याप्त था।
जोनाटास सीडी

1
ठीक है, मैं एक पोस्टग्रॉस्फ़ नोब हूं, लेकिन मुझे रिपोर्ट करना होगा कि केवल restartमेरे लिए काम किया है, न कि reload--- /etc/postgresql/9.5/main/pg_hba.conf(बदलने के peerलिए trust) के बाद।
माइक ओ'कॉनर

91

आपको यह त्रुटि इसलिए मिल रही है क्योंकि आप क्लाइंट प्रमाणीकरण को विफल कर रहे हैं। त्रुटि संदेश के आधार पर, आपके पास संभवतः डिफ़ॉल्ट पोस्टग्रेज कॉन्फ़िगरेशन है, जो क्लाइंट प्रमाणीकरण विधि को सभी पोस्टग्रॉक्सी कनेक्शन के लिए "IDENT" में सेट करता है।

आपको निश्चित रूप से उपलब्ध प्रमाणीकरण सेटिंग्स ( pg_hba.conf में प्रत्येक रिकॉर्ड के लिए ) को बेहतर ढंग से समझने के लिए PostgreSQL मैनुअल में अनुभाग 19.1 क्लाइंट ऑथेंटिकेशन को निश्चित रूप से पढ़ना चाहिए , लेकिन आपके पास होने वाली समस्या से मदद के लिए प्रासंगिक स्निपेट है (से) संस्करण मैनुअल । 9.5 मैनुअल ):

विश्वास

बिना शर्त कनेक्शन की अनुमति दें। यह तरीका किसी को भी अनुमति देता है जो कि पासवर्ड या किसी अन्य प्रमाणीकरण की आवश्यकता के बिना किसी भी PostgreSQL उपयोगकर्ता के रूप में लॉगिन करने के लिए PostgreSQL डेटाबेस सर्वर से जुड़ सकता है। विवरण के लिए धारा 19.3.1 देखें।

अस्वीकार

बिना शर्त कनेक्शन को अस्वीकार करें। यह एक समूह से कुछ मेजबानों को "फ़िल्टरिंग" के लिए उपयोगी है, उदाहरण के लिए एक अस्वीकार लाइन कनेक्ट करने से एक विशिष्ट होस्ट को ब्लॉक कर सकती है, जबकि बाद की एक पंक्ति एक विशिष्ट नेटवर्क में शेष मेजबानों को कनेक्ट करने की अनुमति देती है।

md5

प्रमाणीकरण के लिए क्लाइंट को डबल-एमडी 5-हैशेड पासवर्ड की आपूर्ति करने की आवश्यकता होती है। विवरण के लिए खंड 19.3.2 देखें।

कुंजिका

प्रमाणीकरण के लिए ग्राहक को अनएन्क्रिप्टेड पासवर्ड की आपूर्ति करने की आवश्यकता होती है। चूंकि पासवर्ड नेटवर्क पर स्पष्ट पाठ में भेजा जाता है, इसलिए इसे अविश्वसनीय नेटवर्क पर उपयोग नहीं किया जाना चाहिए। विवरण के लिए खंड 19.3.2 देखें।

जीएसएस

उपयोगकर्ता को प्रमाणित करने के लिए GSSAPI का उपयोग करें। यह केवल टीसीपी / आईपी कनेक्शन के लिए उपलब्ध है। विवरण के लिए धारा 19.3.3 देखें।

SSPI

उपयोगकर्ता को प्रमाणित करने के लिए SSPI का उपयोग करें। यह केवल विंडोज पर उपलब्ध है। विवरण के लिए धारा 19.3.4 देखें।

अध्यक्ष

क्लाइंट के ऑपरेटिंग सिस्टम उपयोगकर्ता नाम को क्लाइंट पर पहचान सर्वर से संपर्क करके प्राप्त करें और जांचें कि क्या यह अनुरोधित डेटाबेस उपयोगकर्ता नाम से मेल खाता है। पहचान प्रमाणीकरण का उपयोग केवल टीसीपी / आईपी कनेक्शन पर किया जा सकता है। जब स्थानीय कनेक्शन के लिए निर्दिष्ट किया जाता है, तो इसके बजाय सहकर्मी प्रमाणीकरण का उपयोग किया जाएगा। विवरण के लिए खंड 19.3.5 देखें।

सहकर्मी

क्लाइंट के ऑपरेटिंग सिस्टम उपयोगकर्ता नाम को ऑपरेटिंग सिस्टम से प्राप्त करें और जांचें कि क्या यह अनुरोधित डेटाबेस उपयोगकर्ता नाम से मेल खाता है। यह केवल स्थानीय कनेक्शन के लिए उपलब्ध है। विवरण के लिए धारा 19.3.6 देखें।

ldap

LDAP सर्वर का उपयोग करके प्रमाणीकरण करें। विवरण के लिए धारा 19.3.7 देखें।

त्रिज्या

एक RADIUS सर्वर का उपयोग करके प्रमाणित करें। विवरण के लिए धारा 19.3.8 देखें।

प्रमाणपत्र

एसएसएल क्लाइंट प्रमाणपत्रों का उपयोग करके प्रमाणीकरण करें। विवरण के लिए धारा 19.3.9 देखें।

PAM

ऑपरेटिंग सिस्टम द्वारा प्रदान की जाने वाली प्लगगेल ऑथेंटिकेशन मॉड्यूल्स (PAM) सेवा का उपयोग करके प्रमाणीकरण। विवरण के लिए खंड 19.3.10 देखें।

इसलिए ... आपके द्वारा अनुभव की जा रही समस्या को हल करने के लिए, आप निम्न में से एक कर सकते हैं:

  1. प्रमाणीकरण विधि (रों) अपने में परिभाषित बदलें pg_hba.conf करने के लिए फ़ाइल trust, md5या password(अपनी सुरक्षा और सादगी जरूरतों के आधार पर) स्थानीय कनेक्शन रिकॉर्ड तुम वहाँ में परिभाषित किया गया है।

  2. pg_ident.confPostgreSQL उपयोगकर्ताओं के लिए अपने ऑपरेटिंग सिस्टम के उपयोगकर्ताओं को मैप करने और उन्हें आपकी आवश्यकताओं के आधार पर संबंधित एक्सेस विशेषाधिकार प्रदान करने के लिए अपडेट करें।

  3. आईडीएन सेटिंग्स को अकेला छोड़ दें और प्रत्येक ऑपरेटिंग सिस्टम उपयोगकर्ता के लिए अपने डेटाबेस में उपयोगकर्ता बनाएं जिसे आप एक्सेस देना चाहते हैं। यदि कोई उपयोगकर्ता पहले से ही OS द्वारा प्रमाणित है और लॉग इन है, तो PostgreSQL को आगे प्रमाणीकरण की आवश्यकता नहीं होगी और डेटाबेस में जो भी विशेषाधिकार (भूमिकाएँ) सौंपे गए हैं, उसके आधार पर उस उपयोगकर्ता तक पहुँच प्रदान करेगा। यह डिफ़ॉल्ट कॉन्फ़िगरेशन है।

नोट: के स्थान pg_hba.confऔर pg_ident.confओएस निर्भर है।


4
मेरे लिए, यह सबसे अच्छा जवाब है। जब आप इन सभी विकल्पों को जानते हैं, तो आप आसानी से आत्मविश्वास को बदल सकते हैं। और विशेष रूप से जब आप देव मशीन पर होते हैं तो आप अपना समय बर्बाद करने से बचने के लिए सभी प्रविष्टियों के लिए बस 'पहचान' सेट कर सकते हैं। धन्यवाद
venkatareddy

1
यह मेरे लिए भी मददगार था। मेरे मामले में pg_hba.conf फ़ाइल सहकर्मी के लिए सेट की गई थी, मैंने इसे पासवर्ड में बदल दिया। ध्यान दें कि एक वेनिला इंस्टॉल से मुझे पोस्टग्रेज उपयोगकर्ता के लिए एक पासवर्ड सेट करना था, sudo su - postgres psql, \ पासवर्ड सेट पासवर्ड। फिर उपयोगकर्ता नाम पोस्टग्रेज और आपके द्वारा सेट किए गए पासवर्ड के साथ pdgadmin3 से एक डिफ़ॉल्ट कनेक्शन लॉन्च करें।
एडनकॉर्बिन ३०'१

1
और वह फाइल कहां पाई जाती है? दी गई, आपको एक सूची बनाने की आवश्यकता हो सकती है, क्योंकि लगता है कि संस्करणों के बीच कोई निरंतरता नहीं है। मुझे लगता है कि मैं सिर्फ '/' पर पाऊंगा।
जोसेफ

1
उबंटू -16.04 पर /etc/postgresql/9.6/main/pg_hba.conf
माइक ओ'कॉनर

1
जैसा कि कोई व्यक्ति जो psql में नया है, यह एक बहुत बड़ी मदद है और इसे स्वीकृत उत्तर होना चाहिए क्योंकि यह विभिन्न प्रमाणीकरण विधियों को पूरा करता है
Vyrnach

45

बस -h localhostबिट जोड़ने के लिए काम करने के लिए आवश्यक सभी मेरा था


क्या हम जानते हैं कि यह इसे ठीक क्यों करता है?
माइकल पेल

postgresql की चूक उचित रूप से सेट नहीं की गई हैं। उन्होंने अब तक इसे ठीक कर लिया होगा, मुझे नहीं पता। जाहिर है डिफ़ॉल्ट यूआरएल होना चाहिएthis_computer = 'http://localhost'
boulder_ruby

15

आप पर्यावरण चर सेट कर सकते हैं PGHOST=localhost:

$ psql -U db_user db_name
psql: FATAL:  Peer authentication failed for user "db_user"

$ export PGHOST=localhost
$ psql -U db_user db_name

Password for user mfonline:

15

उपरोक्त में से कोई भी आपके लिए काम नहीं करता है:

मैंने काफी कुछ पोस्टग्रैज इंस्टॉलेशन किए हैं, लेकिन आज रेडहैट 6.5 सिस्टम (पोस्टग्रेज 9.3 स्थापित करते हुए) पर फ्लूमॉक्स किया गया था। मेरा विशिष्ट hba.conf विन्यास जो ऊपर एरन दिखाता है काम नहीं करता था। यह पता चला कि मेरा सिस्टम IPV6 का उपयोग कर रहा था, और IPV4 कॉन्फ़िगरेशन की अनदेखी कर रहा था। लाइन जोड़ना:

host    all             all             ::1/128                 password

मुझे सफलतापूर्वक लॉगिन करने की अनुमति दी।


धन्यवाद ईथन मैं फेडोरा 20 चला रहा हूं और मुझे ओपी द्वारा उसी मुद्दे का सामना करना पड़ रहा है। IPV4 और IPV6 को पासवर्ड में बदलने के बाद। कनेक्शन सफल रहा।
इब्न सईद

1
आपका स्वागत है। प्रोग्रामिंग या सिस्टम की समस्या का सामना करने पर कई बार मैंने दूसरों के पदों से लाभ उठाया है। खुशी है कि मैं थोड़ा वापस दे सकता था।
एथन ब्राउन

1
इसने फेडोरा 32 पर मेरी जान बचाई!
रामी

12

उपरोक्त सभी उत्तरों में से मेरे लिए कुछ भी काम नहीं किया। मुझे डेटाबेस में उपयोगकर्ताओं के पासवर्ड को मैन्युअल रूप से बदलना पड़ा और यह अचानक काम कर गया।

psql -U postgres -d postgres -c "alter user produser with password 'produser';"

मैंने निम्नलिखित सेटिंग्स का उपयोग किया:

pg_hba.conf

local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            password  
# IPv6 local connections:
host    all             all             ::1/128                 password

कनेक्शन निम्नलिखित आदेश के लिए आखिरकार सफल है:

psql -U produser -d dbname -h localhost -W 

इसके बाद मुझे यहाँ, जोसेफ ने मदद की। विशेष रूप से, मुझे इसे जांचने में मदद करने के लिए अंत में कनेक्शन कमांड। इसके अलावा, यदि कोई भी आश्चर्यचकित है, तो मैं पोस्टग्रैस्कल सेवा को पुनः आरंभ करूंगा (लेकिन मुझे लगता है कि यह निहित है)। इसकी बहुत प्रशंसा करें!
हरलीन

10

मैंने पाया कि मुझे एक पहचान सर्वर स्थापित करना था, जो कि पोर्ट 113 पर सुनता है।

sudo apt-get install pidentd
sudo service postgresql restart

और फिर पहचान ने काम किया।


10

हम्म्म ...

यदि आप 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!

2
खेल के लिए देर से, लेकिन, गंभीरता से, चीजों को ठीक से समझाने के प्रयास में लगाने के लिए धन्यवाद, ताकि मैं समझूं!
जेफरी 'जेएफ' लिम

10

मेरे मामले में, यहाँ समाधान: (संबंधित लोगों के लिए) पोस्टग्रेज के लिए लॉगिन करें:

sudo -i -u postgres
psql
ALTER USER postgres WITH PASSWORD 'postgres'; # type your password here

सादर


7

समस्या अभी भी आपकी pg_hba.conf फ़ाइल है। यह पंक्ति: आप इस फ़ाइल को / etc / postgres / varion / main में पा सकते हैं

local   all             postgres                                peer
Should be

local   all             postgres                                md5

ये प्रमाणीकरण के तरीकों पर आधिकारिक PostgreSQL डॉक्स के अनुसार दोनों विकल्पों का संक्षिप्त विवरण हैं।

सहकर्मी प्रमाणीकरण

सहकर्मी प्रमाणीकरण विधि क्लाइंट के ऑपरेटिंग सिस्टम उपयोगकर्ता नाम को कर्नेल से प्राप्त करके और इसका उपयोग अनुमति डेटाबेस उपयोगकर्ता नाम (वैकल्पिक उपयोगकर्ता नाम मैपिंग के साथ) के रूप में करती है। यह विधि केवल स्थानीय कनेक्शनों पर समर्थित है।

पासवर्ड प्रमाणीकरण

पासवर्ड-आधारित प्रमाणीकरण विधियाँ md5 और पासवर्ड हैं। ये तरीके उसी तरह को छोड़कर संचालित होते हैं, जिस तरह से पासवर्ड को कनेक्शन भर में भेजा जाता है, क्रमशः MD5-hashed और clear-text।

यदि आप पासवर्ड "सूँघने" के बारे में चिंतित हैं, तो md5 को प्राथमिकता दी जाती है। यदि संभव हो तो प्लेन पासवर्ड से हमेशा बचना चाहिए। हालाँकि, dd_user_namespace सुविधा के साथ md5 का उपयोग नहीं किया जा सकता है। यदि कनेक्शन SSL एन्क्रिप्शन द्वारा सुरक्षित है, तो पासवर्ड का सुरक्षित रूप से उपयोग किया जा सकता है (हालांकि एसएसएल प्रमाणपत्र प्रमाणीकरण एक बेहतर विकल्प हो सकता है यदि एक एसएसएल का उपयोग करने पर निर्भर करता है)।

इस फ़ाइल को बदलने के बाद, अपने PostgreSQL सर्वर को पुनः आरंभ करना न भूलें। यदि आप लिनक्स पर हैं, तो वह होगाsudo service postgresql restart.


7

फेडोरा 26 के लिए और पोस्टग्रेज 9.6

पहले, उपयोगकर्ता रूट के रूप में लॉग इन करें और फिर निम्न आदेशों द्वारा psql में प्रवेश करें

$ su postgres  

फिर

$ psql

में psqlhba_file की खोज स्थान ==> साधनpg_hba.conf

postgres=# show hba_file ; 
 hba_file  
--------------------------------------   
 /etc/postgresql/9.6/main/pg_hba.conf  
(1 row)  

फ़ाइल में pg_hba.confयह करने के लिए उपयोगकर्ता का उपयोग बदल जाते हैं

host all all 127.0.0.1/32 md5

6

बैश शेल में मैक OSX पर PostgreSQL 9.3 पर मेरा समाधान sudoडेटा फ़ोल्डर में जाने के लिए उपयोग करना था , और फिर pg_hba.confसभी उपयोगकर्ताओं पर भरोसा करने और लॉग इन करने में सक्षम होने के लिए फ़ाइल को आवश्यक लाइनें संलग्न करना । यह वही है जो मैंने किया है। :

# in bash_profile edit PGDATA environmental variable
open ~/.bash_profile

# append this line to bash_profile
export PGDATA="/Library/PostgreSQL/9.3/data"

# reload bash_profile
source ~/.bash_profile

# open pg_hba.conf in vim
sudo vi /Library/PostgreSQL/9.3/data/pg_hba.conf

# append these two lines to the end of the pg_hba.conf file
local   all   all                  trust
host    all   all   127.0.0.1/32   trust

# can now login as user in bash
psql -d <db_name> -U <user_name> -W

1
यह विकास सर्वर के लिए ठीक है, लेकिन मैं इसे उत्पादन परिवेश के लिए अनुशंसित नहीं करूंगा क्योंकि आपको इन सेटिंग्स के साथ डेटाबेस से जुड़ने के लिए पासवर्ड की आवश्यकता नहीं है।
माइकल


4

मैंने इस त्रुटि को हल करने में अधिक समय बिताया है जिसे मैं स्वीकार करता हूं।

मेरे विचार से pg_hba.conf में प्रमाणीकरण कॉन्फ़िगरेशन का क्रम प्रासंगिक है। डिफ़ॉल्ट कॉन्फ़िगरेशन फ़ाइल में एक वेनिला इंस्टॉल में कई लाइनें शामिल हैं। ये चूक आपके प्रमाणीकरण प्रयासों की शर्तों को प्रमाणित करने में विफल हो सकती हैं। यह .conf फ़ाइल के अंत में जोड़े गए अतिरिक्त कॉन्फ़िगरेशन की परवाह किए बिना विफल रहता है।

यह देखने के लिए कि कॉन्फ़िगरेशन की कौन सी लाइन का उपयोग किया जाता है, संदेशों के लिए डिफ़ॉल्ट लॉग फ़ाइल को देखना सुनिश्चित करें। आपको ऐसा कुछ दिखाई दे सकता है

LOG:  could not connect to Ident server at address "127.0.0.1", port 113: Connection refused
FATAL:  Ident authentication failed for user "acme" 
DETAIL:  Connection matched pg_hba.conf line 82: "host     all             all             127.0.0.1/32            ident"

यह पता चला कि यह डिफ़ॉल्ट रेखा अस्वीकृति का कारण बन रही है।

host    all             all             127.0.0.1/32            ident

इसे टिप्पणी करने का प्रयास करें।


3

इसके आसपास एक हैक pg_hba.conf को संपादित करना है

sudo vi /etc/postgresql/9.3/main/pg_hba.conf

अस्थायी रूप से

# Database administrative login by Unix domain socket
local   all             postgres                                   trust

इस बिंदु पर आप कर रहे हैं। सुरक्षा के लिए, फिर जाओ और

sudo -u postgres psql template1
ALTER USER postgres with encrypted password 'your_password';

फिर वापस जाएं और pg_hba.conf को वापस सेट करें

# Database administrative login by Unix domain socket
local   all             postgres                                   md5

1

मुझे भी ऐसी ही समस्या थी और मैंने इसे pg_hba.conf में ठीक किया जब IP6 पते के लिए भी सभी पहचान विधियों को हटा दिया गया (इसके बावजूद मेरे पास मशीन पर केवल IP4 है)।

host all all 127.0.0.1/32 password
host all all ::1/128 password
#for pgAdmin running at local network
host all all 192.168.0.0/24 md5

0

मेरे पास इसका अनुसरण करने के बाद भी ऐसा ही कुछ था: Ubuntu 12.04 में रेल्स डेवलपमेंट के लिए PostgreSQL सेटअप

मैंने अन्य उत्तरों की कोशिश की, लेकिन मुझे जो करना था, वह था: "config / database.yml"

development:
  adapter: postgresql
  encoding: unicode
  database: (appname)_development
  pool: 5
  username: (username you granted appname database priviledges to)
  password:

0

यदि आप इसे CentOS पर उपयोग कर रहे हैं, तो आपको उपरोक्त समाधान करने के बाद पोस्टग्रोज़ को फिर से लोड करना पड़ सकता है:

systemctl restart postgresql-9.3.service

यह अब बस हैpostgresql
नील चौधरी

@NeilChowdhury postgresql सेवा को अभी भी कम से कम लिनक्स सिस्टम में सेवा के नाम से संस्करण मिला है। इस कमांड को देखने के लिए systemctl status | grep postgres
दौड़ें


0

Windows के लिए यदि आप pb_gba.conf को संपादित नहीं करना चाहते हैं अर्थात MD5 (डिफ़ॉल्ट) के लिए विधि छोड़ें, PGDmin में क्वेरी टूल में इस क्वेरी को चलाकर एक नया उपयोगकर्ता बनाएं। pgAdmin

CREATE USER admin WITH PASSWORD 'secret'

फिर सीएमडी में

psql "dbname=Main_db host=127.0.0.1 user=admin password=secret port=5432

जहां dbname postgresql में आपका db है

यहां छवि विवरण दर्ज करें


-3

इसने मेरे लिए काम किया: http://tecadmin.net/fatal-ident-authentication-failed-for-user-postgres/#

local   all             postgres                                trust
local   all             myapp_usr                               trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
#host    all             all             ::1/128                 trust

1
यह लोकलहोस्ट से किसी को भी किसी भी उपयोगकर्ता के रूप में लॉगिन करने की अनुमति देता है। लिंक में कहीं भी इस व्यवहार का उल्लेख नहीं किया गया है। और हाँ, डेबियन जानकारी पृष्ठों में एक ही बात होती है।
rkapl
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.