दिलचस्प पोस्ट
स्क्रैपिंग Google वित्त (सुंदरसूप) 2 php.ini फाइलें बेस 62 रूपांतरण क्यों नहीं AngularJS डॉक्स मॉडल निर्देश में एक डॉट का उपयोग करते हैं? .woff2 फोंट के लिए उचित MIME प्रकार कैसे ठीक से बंद जावा निष्पादक सेवा स्विफ्ट: एक स्ट्रिंग को एक सरणी में विभाजित करें एकाधिक कॉलम एक साथ पेस्ट करें एंड्रॉइड रनटाइम एक्सपैशन: सेवा को इन्स्तांत करने में असमर्थ NHibernate जनरेटर jquery क्लोन फार्म फ़ील्ड और वेतन वृद्धि आईडी क्या वास्तव में एक स्टैक अतिप्रवाह त्रुटि का कारण बनता है? स्ट्रिंग में पहला अन-दोहराया वर्ण ढूंढें डेटटाइम के रूप में वर्तमान समय कैसे प्राप्त करें उपयोगकर्ता द्वारा पुश नोटिफिकेशन सक्षम किए जाने पर iPhone पर निर्धारित करें

त्रुटि प्राप्त हो रही है: उपयोगकर्ता के लिए "पोस्टग्रेर्स" के लिए पीअर प्रमाणीकरण विफल रहा, जब प्सक्स्कीएल रेल के साथ काम कर रहा था

मैं ला रहा हूँ

FATAL: Peer authentication failed for user "postgres" 

जब मैं रेलगाड़ियों के साथ पोस्टग्रेर्स काम करने की कोशिश करता हूं

यहां मेरा pg_hba.conf , मेरा pg_hba.conf और पूर्ण ट्रेस का डंप है pg_hba.conf

मैंने pg_hba में MD5 को प्रमाणीकरण बदल दिया और विभिन्न चीजों की कोशिश की, लेकिन कोई भी काम नहीं कर रहा है।

मैंने रेल 3.2 के अनुसार एक नया उपयोगकर्ता और डेटाबेस बनाने का भी प्रयास किया , FATAL: उपयोगकर्ता के लिए पीअर प्रमाणीकरण विफल रहा (पीजी :: त्रुटि)

लेकिन वे pgadmin पर दिखाई नहीं देते हैं या यहां तक ​​कि जब मैं sudo -u postgres psql -l चलाता हूँ

किसी भी विचार में मैं गलत जा रहा हूं?

वेब के समाधान से एकत्रित समाधान "त्रुटि प्राप्त हो रही है: उपयोगकर्ता के लिए "पोस्टग्रेर्स" के लिए पीअर प्रमाणीकरण विफल रहा, जब प्सक्स्कीएल रेल के साथ काम कर रहा था"

समस्या अभी भी आपका pg_hba.conf फ़ाइल (/etc/postgresql/9.1/main/pg_hba.conf) है। यह रेखा:

 local all postgres peer 

होना चाहिए

 local all postgres md5 

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

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

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

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

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

पासवर्ड आधारित प्रमाणीकरण विधियाँ एमडी 5 और पासवर्ड हैं ये पद्धति इसी तरह से काम करती है कि पासवर्ड को कनेक्शन में भेजा जाता है, अर्थात एमडी 5-हैशड और स्पष्ट-पाठ क्रमशः।

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

Postgresql इंस्टॉल करने के बाद मैंने नीचे दिए चरणों का पालन किया।

  1. उबंटू के लिए फ़ाइल pg_hba.conf को खोलें, यह /etc/postgresql/9.x/main में /etc/postgresql/9.x/main और इस लाइन को परिवर्तित करें:
  स्थानीय सभी पोस्टग्रेज पीयर 

सेवा मेरे

  स्थानीय सभी पोस्टग्रेस भरोसा 
  1. सर्वर को पुनरारंभ करें
 sudo service postgresql restart 
  1. Psql में लॉग इन करें और अपना पासवर्ड सेट करें

psql -U पोस्टग्रेज़

 ALTER USER postgres with password 'your-pass'; 
  1. अंत में से pg_hba.conf को बदलें
  स्थानीय सभी पोस्टग्रेस भरोसा 

सेवा मेरे

  स्थानीय सभी पोस्टग्रेड्स एमडी 5 

Postgresql सर्वर को पुनरारंभ करने के बाद, आप इसे अपने खुद के पासवर्ड से एक्सेस कर सकते हैं

प्रमाणीकरण के तरीकों का विवरण:

विश्वास – किसी भी व्यक्ति जो सर्वर से कनेक्ट हो सकता है डेटाबेस को एक्सेस करने के लिए अधिकृत है

सहकर्मी – इसे एक्सेस करने के लिए ग्राहक उपयोगकर्ता नाम के रूप में क्लाइंट के ऑपरेटिंग सिस्टम का प्रयोग करें।

एमडी 5 – पासवर्ड-बेस प्रमाणीकरण

आगे संदर्भ के लिए यहां देखें

यदि आप स्थानीयहोस्ट (127.0.0.1) से जुड़ते हैं तो आपको उस विशेष समस्या का अनुभव नहीं करना चाहिए। मैं pg_hba.conf के साथ बहुत अधिक मसला नहीं होता, बल्कि इसके बजाय मैं आपकी कनेक्शन स्ट्रिंग समायोजित करूँगा:

 psql -U someuser -h 127.0.0.1 database 

जहां कुछ उपयोगकर्ता आपका उपयोगकर्ता है जिसे आप कनेक्ट कर रहे हैं और डेटाबेस आपके डेटाबेस से कनेक्ट होने की अनुमति है।

पोस्टग्रेज़ सेटअप करने के लिए मैं डेबियन पर ऐसा करता हूं:

 http://www.postgresql.org/download/linux/debian/ (Wheezy 7.x) as root … root@www0:~# echo "deb http://apt.postgresql.org/pub/repos/apt/ wheezy-pgdg main" >> /etc/apt/sources.list root@www0:~# wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - root@www0:~# apt-get update root@www0:~# apt-get install postgresql-9.4 root@www0:~# su - postgres postgres@www0:~$ createuser --interactive -P someuser Enter password for new role: Enter it again: Shall the new role be a superuser? (y/n) n Shall the new role be allowed to create databases? (y/n) y Shall the new role be allowed to create more new roles? (y/n) n postgres@www0:~$ createdb -O someuser database postgres@www0:~$ psql -U someuser -h 127.0.0.1 database 

का आनंद लें!

  1. इस /etc/postgresql/9.x/main/ पर जाएं और pg_hba.conf फ़ाइल खोलें

मेरे मामले में:

 $> sudo nano /etc/postgresql/9.3/main/pg_hba.conf 
  1. पीडर को एमडी 5 के साथ बदलें

तो ये इसमें बदल जाएगा:

यूनिक्स डोमेन सॉकेट स्थानीय सभी पोस्टग्रेड्स पीअर द्वारा डेटाबेस प्रशासनिक लॉगिन

 # TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local all all peer # IPv4 local connections: host all all 127.0.0.1/32 md5 

इस:

यूनिक्स डोमेन सॉकेट स्थानीय सभी पोस्टग्रेड्स एमडी 5 द्वारा डेटाबेस प्रशासनिक लॉगिन

 # TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local all all md5 # IPv4 local connections: host all all 127.0.0.1/32 md5 
  1. फिर pg सर्वर को पुनरारंभ करें:

    $> सुडो सेवा पोस्टग्रेस्क्ल पुनरारंभ

नीचे पोस्टग्रेज़ से जुड़ने के लिए इस्तेमाल किए जाने वाले विधि की सूची है:

 # METHOD can be "trust", "reject", "md5", "password", "gss", "sspi", # "krb5", "ident", "peer", "pam", "ldap", "radius" or "cert". Note that # "password" sends passwords in clear text; "md5" is preferred since # it sends encrypted passwords. 

नोट: अगर आपने अभी तक पोस्टग्रेज़ उपयोगकर्ता नहीं बनाया है वह बनाएं और अब आप उस उपयोगकर्ता क्रेडेंशियल का उपयोग करके पोस्टग्रेस सर्वर तक पहुंच सकते हैं।

मुझे भी यही समस्या थी।

डिपा से समाधान बिल्कुल सही है

बस सुनिश्चित करें कि आपके पास PostgreSQL का उपयोग करने के लिए कॉन्फ़िगर करने वाला उपयोगकर्ता है

फ़ाइल की जांच करें:

 $ ls /etc/postgresql/9.1/main/pg_hba.conf -l 

इस फाइल की अनुमति उस उपयोगकर्ता को दी जानी चाहिए जिसे आपने अपने एसक्यूएल के साथ पंजीकृत किया है।

आगे की। यदि आप अब तक अच्छे हैं …

@ डेपा के निर्देशों के अनुसार अद्यतन करें

अर्थात

 $ sudo nano /etc/postgresql/9.1/main/pg_hba.conf 

और फिर परिवर्तन करें।

यदि आपको समस्या है, तो आपको अपने pg_hba.conf को ढूंढने की आवश्यकता है

find / -name 'pg_hba.conf' 2>/dev/null

और छवि की तरह कॉन्फ़िगरेशन बदलें:

पोस्टग्रेस्क्ल 9.3

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

पोस्टग्रेस्क्ल 9.4

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

इसके बाद आपको सर्विस पोस्टग्रेस्क्ल को फिर से शुरू करना चाहिए

पोस्टग्रेस्क्ल 9.3 के लिए उदाहरण

service postgresql-9.3 restart

अगर आपको कोई समस्या है, तो आपको पासवर्ड फिर से सेट करना होगा:

ALTER USER db_user with password 'db_password';

मैं एक क्लोन सर्वर पर डेटा डायरेक्टरी ले रहा था और पोस्टग्रेज़ के रूप में लॉग इन करने में परेशानी थी I जैसे पोस्टग्रेज़ पासवर्ड को रीसेट करना मेरे लिए काम करती है

root# su postgres postgres$ psql -U postgres psql (9.3.6) Type "help" for help. postgres=#\password Enter new password: Enter it again: postgres=#

कनेक्शन में host=localhost उपयोग करें

 PGconn *conn = PQconnectdb( "host=localhost user=postgres dbname=postgres password=123" ); 

उपरोक्त संपादन मेरे लिए काम किया, मुझे पता चला कि मुझे उन्हें बनाने के बाद पोस्टग्रेर्स सर्वर को पुनरारंभ करने की आवश्यकता थी। उबुन्टू के लिए:

 sudo /etc/init.d/postgresql restart 

यदि आप डिफ़ॉल्ट कॉन्फ़िग रखना चाहते हैं, लेकिन एक विशिष्ट उपयोगकर्ता / डीबी कनेक्शन के लिए सॉकेट कनेक्शन के साथ md5 प्रमाणीकरण चाहते हैं, तो "स्थानीय सभी / सभी" पंक्ति से पहले "स्थानीय" पंक्ति जोड़ें:

 # TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local username dbname md5 # <-- this line local all all peer # IPv4 local connections: host all all 127.0.0.1/32 ident # IPv6 local connections: host all all ::1/128 ident 

नीचे दिए गए आदेश मेरे लिए काम करता है:

 psql -d myDb -U username -W 

आपको विश्वास करने के लिए बस METHOD सेट की आवश्यकता है

 #TYPE DATABASE USER ADDRESS METHOD local all all trust 

और पोस्टग्रेर्स सर्वर को पुनः लोड करें

 # service postgresql-9.5 reload 

Pg_hba.conf में परिवर्तनों को RESTART postgres सर्वर की आवश्यकता नहीं है। बस रीलोड

Pg_hba.conf (/etc/postgresql/9.1/main/pg_hba.conf | line 85) में विश्वास करने के लिए विधिधारी पीअर बदल रहा है, समस्या को हल करता है एमडी 5 जोड़ना एक पासवर्ड पूछता है, इसलिए यदि पासवर्ड का उपयोग करने से बचने की आवश्यकता है, तो एमडी 5 के बजाय ट्रस्ट का उपयोग करें।

कई अन्य उत्तर विभिन्न कॉन्फ़िग फाइलों में सेटिंग्स से संबंधित हैं, और pg_hba.conf से संबंधित हैं और 100% सही हैं। हालांकि, सुनिश्चित करें कि आप सही कॉन्फ़िग फ़ाइलों को संशोधित कर रहे हैं।

जैसा कि अन्य लोगों ने उल्लेख किया है कि कॉन्फ़िग फ़ाइल स्थान मुख्य कॉन्फ़िग फ़ाइल के अंदर विभिन्न सेटिंग्स के साथ ओवरराइड किया जा सकता है, साथ ही -D विकल्प के साथ कमांड लाइन पर मुख्य कॉन्फ़िग फ़ाइल का पथ प्रदान कर सकते हैं।

आप अपने कमांड फाइलों को पढ़ने के लिए psql सत्र में निम्नलिखित कमांड का उपयोग कर सकते हैं (मान लें कि आप psq लॉन्च कर सकते हैं)। यह सिर्फ एक समस्या निवारण कदम है जो कुछ लोगों की सहायता कर सकता है:

 select * from pg_settings where setting~'pgsql'; 

आपको यह भी सुनिश्चित करना चाहिए कि आपके पोस्टग्रेज़ उपयोगकर्ता के लिए होम डाइरेक्टरी वह जगह है जहां आप उम्मीद करते हैं कि यह होना चाहिए। मैं यह कहता हूं क्योंकि यह इस बात की अनदेखी करना काफी आसान है कि आपका संकेत आपके होम डायरेक्टरी के वास्तविक पथ के बजाय ' ~ ' प्रदर्शित करेगा, जिससे यह स्पष्ट नहीं होगा। कई प्रतिष्ठानों ने पोस्टग्रेज़ उपयोगकर्ता होम डाइरेक्टरी को /var/lib/pgsql डिफ़ॉल्ट बनाया है।

यदि यह निर्धारित नहीं है कि क्या होना चाहिए, तो postgresql सेवा को रोकें और रूट के रूप में लॉग इन करते समय निम्न कमांड का उपयोग करें। यह भी सुनिश्चित करें कि पोस्टग्रेज़ उपयोगकर्ता दूसरे सत्र में लॉग इन नहीं है:

 usermod -d /path/pgsql postgres 

अंत में सुनिश्चित करें कि आपका PGDATA चर एलो echo $PGDATA टाइप करके सही ढंग से सेट किया गया है, जो इसके जैसा कुछ आउटपुट होना चाहिए:

 /path/pgsql/data 

अगर यह सेट नहीं है, या आप जो अपेक्षा करते हैं उससे अलग कुछ दिखाता है, तो अपने स्टार्टअप या आरसी फाइलों की जांच करें जैसे .profile या .bash.rc – यह आपके ओएस और आपके शेल के आधार पर बहुत भिन्न होगा। अपनी मशीन के लिए सही स्टार्टअप स्क्रिप्ट निर्धारित करने के बाद, आप निम्न सम्मिलित कर सकते हैं:

 export PGDATA=/path/pgsql/data 

मेरे सिस्टम के लिए, मैंने इसे /etc/profile.d/profile.local.sh में रखा था, इसलिए यह सभी उपयोगकर्ताओं के लिए सुलभ था।

अब आप सामान्य रूप से डेटाबेस को आरंभ करने में समर्थ होंगे और आपकी सभी psql पथ सेटिंग्स सही होनी चाहिए!