त्रुटि संदेश पोस्ट करता है: FATAL: पहचान प्रमाणीकरण उपयोगकर्ता के लिए विफल "..."


जवाबों:


36

इसका मतलब है कि Postgres पहचान प्रोटोकॉल का उपयोग करके उपयोगकर्ता को प्रमाणित करने की कोशिश कर रहा है, और नहीं कर सकता। पहचान कार्य इस तरह से करते हैं:

  • डेटाबेस 'db' पर आपकी डेटाबेस भूमिका 'फू' है
  • आपकी pg_hba.confफ़ाइल (इन /etc/postgres-something/main) dbकुछ होस्ट से कनेक्ट करने वाले उपयोगकर्ताओं के लिए डेटाबेस से कनेक्ट करने के लिए प्रोटोकॉल के रूप में 'पहचान' को परिभाषित करती है
  • कनेक्शन बनाने वाला यूनिक्स उपयोगकर्ता नाम 'फू' है
  • उपयोगकर्ता द्वारा मशीन पर चल रहा एक पहचान सर्वर इस बात की पुष्टि कर रहा है कि उनका उपयोगकर्ता नाम वास्तव में 'foo' है

संभावित कारण और समाधान:

  1. नहीं है कोई अध्यक्ष सर्वर मशीन जिससे आप कनेक्ट होना कोशिश कर रहे हैं पर चल रहा है। इसे पोर्ट 113 पर कनेक्ट करने का प्रयास करके परीक्षण करें। यदि वह विफल रहता है, तो पहचान सर्वर (जैसे sudo apt-get install oidentd) स्थापित करें।
  2. एक पहचान सर्वर है, लेकिन उस डेटाबेस से मेल खाने वाली कोई भूमिका नहीं है जिसे आप (उपरोक्त उदाहरण में 'फू') से जोड़ने की कोशिश कर रहे हैं। इसलिए इसे डेटाबेस से किसी भी तरह सुपरसुअर अधिकारों से जोड़कर बनाएं और करें CREATE ROLE foo। वैकल्पिक रूप से एक प्रविष्टि जोड़ें /etc/postgresql/.../main/pg_ident.conf
  3. हो सकता है कि शेल उपयोगकर्ता नाम डेटाबेस की भूमिका से मेल नहीं खाता हो । आप इस परीक्षण करने के लिए सक्षम हो सकते हैं अध्यक्ष सर्वर से कनेक्ट करते समय एक कनेक्शन चल रहा है, और सही पोर्ट संख्या पारित करके।
  4. हो सकता है कि आप वास्तव में एक पासवर्ड से जुड़ना चाहते हों , न कि पहचान। pg_hba.confफ़ाइल को उचित रूप से संपादित करें । उदाहरण के लिए, परिवर्तन:

    host all all 127.0.0.1/32 ident
    

    सेवा मेरे

    host all all 127.0.0.1/32 md5
    

2
फेडोरा के लिए, फ़ाइल में है/var/lib/psql/data
अनवर

मुझे नहीं लगता कि किसी को भी इस बात का जवाब देने की परवाह होगी कि पोस्टग्रेज 'पहचान' का उपयोग डिफ़ॉल्ट लॉगिन के रूप में क्यों करते हैं?
icc97

क्योंकि वह 20 साल पहले समझ में आया था और कुछ भी कभी नहीं बदलता * निक्स? :)
स्टीव बेनेट

@ icc97, इस उत्तर में कुछ भी इंगित नहीं करता है कि "पहचान" पोस्टग्रेज के लिए डिफ़ॉल्ट लॉगिन है; आपको यह विचार कहाँ से मिला? अब तक मुझे पता है कि एक पोस्टग्रेज क्लस्टर में डिफ़ॉल्ट सुपरयुजर भूमिका नाम "पोस्टग्रेज" है।
वाइल्डकार्ड

9

कारणों के बारे में निश्चित नहीं है, लेकिन यह मेरे लिए तय है:

में pg_hba.conf

इसे बदलें:

सभी को 127.0.0.1/32 md5 होस्ट करें

सटीक त्रुटि: Caused by: org.postgresql.util.PSQLException: FATAL: Ident authentication failed for user "postgres"


1
बदलते "पहचान" -> "md5" ने मेरे लिए यह किया
webwesen

3

CentOS पर, निम्न पंक्ति जोड़ें /var/lib/pgsql/9.3/data/pg_hba.conf:

host all all 127.0.0.1/32 trust

और अन्य प्रविष्टियों पर टिप्पणी करें।

बेशक, यह सेटिंग सुरक्षित नहीं है , लेकिन अगर आप सिर्फ मेरे जैसे विकास वीएम के बारे में गड़बड़ कर रहे हैं तो यह शायद ठीक है ...


0

यदि आपने पहले से यह कोशिश नहीं की है, तो अपनी pg_hba.conf फ़ाइल की समीक्षा करें। इसे कुछ नाम दिया जाएगा जैसे /var/lib/pgsql/9.3/data/pg_hba.conf (फेडोरा 20); इसका पता लगाने के लिए आपको 'फाइंड / -नाम pg_hba.conf' का उपयोग करना पड़ सकता है।

फ़ाइल के निचले भाग में, स्थानीय परीक्षण के लिए 'METHOD' के मानों को 'विश्वास' में बदलें (देखें कि किसी अन्य के लिए डॉक्स पोस्ट करता है)। यह सुनिश्चित करने के लिए मशीन को रिबूट करें कि सब कुछ साफ शुरू हो गया है और नए पैरामेट्स पढ़े गए हैं।

उम्मीद है कि यह आपके संकटों को ठीक करेगा। इसने मेरी समस्याओं को Fedg 20 पर PostgreSQL 9.3 के साथ हल किया।


जब PostgreSQL कॉन्फिग्स को बदलकर अपनी पूरी मशीन को रिबूट करना आवश्यक नहीं है। इसके बजाय, pg_ctl reloadकंसोल से उपयोग करने का प्रयास करें , या SELECT pg_reload_conf();SQL को एक विशेषाधिकार प्राप्त उपयोगकर्ता के रूप में निष्पादित करते समय।
बेंज़वाडाम्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.