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


736

मुझे त्रुटि मिल रही है:

FATAL: Peer authentication failed for user "postgres"

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

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

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

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

लेकिन वे pgadmin पर नहीं दिखाते हैं या जब भी मैं दौड़ता हूं sudo -u postgres psql -l

कोई भी विचार जहाँ मैं गलत हो रहा हूँ?


1
1): सुनिश्चित करें कि आपके पास अपने डेटाबेस पर "पोस्टग्रेज" नाम का एक उपयोगकर्ता बना है और उसका अधिकार है ) 2: सुनिश्चित करें कि उसके पास एक पासवर्ड है 3): सुनिश्चित करें कि आपके config / database.yml में अधिकार क्रेडेंशियल (उपयोगकर्ता नाम + पासवर्ड) हैं

2
हर जगह सहकर्मी और इंडेंट की आवश्यकता md5
Artem.Borysov

13
यह उत्तर भी देखें - कनेक्शन विफल हो सकता है localhostलेकिन सफल हो सकता है 127.0.0.1
uvsmtid

9
मेरे मामले में मुझे फ़ाइल host: localhostमें जोड़ने की आवश्यकता है database.yml
मिखाइल वेलिकोव

इस लिंक ने मेरी मदद की। Suite.opengeo.org/docs/latest/dataadmin/pgGettingStarted/…
सुदीप भंडारी

जवाबों:


1027

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

यह रेखा:

local   all             postgres                                peer

होना चाहिए:

local   all             postgres                                md5

* यदि आप इस फ़ाइल को नहीं ढूंढ पा रहे हैं, तो आपको यह locate pg_hba.confदिखाना चाहिए कि फ़ाइल कहाँ है।

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

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

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

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

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

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

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

के लिए नमूना स्थान pg_hba.conf:
/etc/postgresql/9.1/main/pg_hba.conf


50
इसे बदलने के बाद आपको अपनी पोस्टग्रैसिकल सेवा को पुनः लोड करने की आवश्यकता होगी/etc/init.d/postgresql reload
फनकोट्रॉन

78
यहाँ डाल के बाद से मैं हमेशा भूल जाते हैं कि यह फ़ाइल कहाँ है/etc/postgresql/9.1/main/pg_hba.conf
डग

12
@funkotron कम से कम मेरे एलिमेंटरीओएस (उबंटू) इंस्टॉलेशन पर sudo service postgreql restartभी काम करता है।
मार्नेन लाईबो-कोसर

13
मेरे स्वयं के प्रश्न का उत्तर देने के लिए: 'सहकर्मी' प्रमाणीकरण का अर्थ है कि पोस्टग्रेज आपके लॉगिन नाम के लिए ऑपरेटिंग सिस्टम पूछता है और प्रमाणीकरण के लिए इसका उपयोग करता है, इसलिए ओएस और पोस्टग्रेज पर उपयोगकर्ता समान होना चाहिए। 'md5' एन्क्रिप्टेड पासवर्ड ऑथेंटिकेशन का उपयोग करता है।
डेनिस

9
मैं बदलाव को समझता हूं। लेकिन यह डिफ़ॉल्ट व्यवहार क्यों नहीं है? क्या md5 का उपयोग करने में कोई कमी है?
विक्टर मार्कोनी

361

Postgresql स्थापित करने के बाद मैंने नीचे दिए चरणों को किया।

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

    स्थानीय सभी साथियों को स्थगित कर देते हैं

    सेवा

    स्थानीय सभी ट्रस्ट पर भरोसा करते हैं
  2. सर्वर को पुनरारंभ करें

    $ sudo service postgresql restart
  3. Psql में लॉगिन करें और अपना पासवर्ड सेट करें

    $ psql -U postgres
    db> ALTER USER postgres with password 'your-pass';
  4. अंत में pg_hba.confसे बदलें

    स्थानीय सभी ट्रस्ट पर भरोसा करते हैं

    सेवा

    स्थानीय सभी पोस्ट md5

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

प्रमाणीकरण विधियों का विवरण:

विश्वास - जो कोई भी सर्वर से जुड़ सकता है वह डेटाबेस तक पहुंचने के लिए अधिकृत है

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

md5 - पासवर्ड-आधार प्रमाणीकरण

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


17
मेरे लिए काम करने के तरीके को "विश्वास" में बदलना। प्रमाणीकरण विधि के विवरण की व्याख्या के लिए +1।
ला-कोमाद्रेजा

4
ओएस एक्स होमब्रेव पर डिफ़ॉल्ट विश्वास है, जबकि उबंटू पर किसी तरह डिफ़ॉल्ट "सहकर्मी" पर सेट है, जिसके कारण मेरे सेटअप और मेरे सहयोगी के बीच विसंगतियां हुईं। हमने उसे एमडी 5 में बदल दिया जो मदद नहीं करता था, इसलिए "विश्वास" यहां असली जवाब है (हम केवल विकास परीक्षण कर रहे हैं)। अधिक उठाव करना चाहिए।
१२:४२ पर xji

2
आप भी शुरुआत से ही हर जगह md5 सेट कर सकते हैं
Artem.Borysov

2
यह तरीका मेरे लिए काम कर रहा है, पहले विधि md5 का उपयोग करना नहीं था।
सिनिपर्ड

एक ही पासवर्ड का उपयोग करने की आवश्यकता है? sudo passwd postgres
पीटर क्रस

211

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

psql -U someuser -h 127.0.0.1 database

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

यहाँ मैं क्या करने के लिए डेबियन सेटअप सेटअप करने के लिए है:

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

का आनंद लें!


16
मुझे लगता है कि यह सबसे अच्छा समाधान है क्योंकि यह वास्तव में वैश्विक कॉन्फ़िगरेशन के साथ खिलवाड़ किए बिना स्थानीय समस्या को हल करता है क्योंकि अन्य उत्तर सुझाते हैं।
जेटी

1
मैं परिवर्तन करना पड़ा host: 127.0.0.1दोषी से करने के लिए स्थानीय होस्ट में config / database.yml - यह एक ही मशीन पर है तो मैं क्यों समझ में नहीं आता
एंथोनी

एंथोनी, क्या आप कह रहे हैं कि आपने कनेक्शन विफलता का सामना किया जब तक कि आपने अपने डेटाबेस में स्थानीयहोस्ट को 127.0.0.1 पर समायोजित नहीं किया। मेरा सुझाव है कि यदि आपकी स्थिति है तो आपकी / etc / मेजबानों की जाँच करें। अन्यथा, लोकलहोस्ट को हल करने से संबंधित कुछ अन्य विषमताएं हो सकती हैं।
स्टाइलसएटर

1
स्थानीय पीयर प्रमाणीकरण विधि के साथ गड़बड़ करने की तुलना में यह बहुत अधिक सुरुचिपूर्ण है।
mdh

1
यह अब तक का सबसे अच्छा समाधान IMO है
सलिल जूनियर

45

यह मेरे लिए काम किया है !!

sudo -u postgres psql

इस लंबे समय के रूप में ठीक काम करना चाहिए के रूप में अपने वर्तमान में लॉग इन उपयोगकर्ता sudoers फाइल में है में।
Abubacker सिद्दीक

16

यदि आपके पास कोई समस्या है, तो आपको अपना पता लगाने की आवश्यकता है pg_hba.conf। आदेश है:

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

और उसके बाद कॉन्फ़िगरेशन फ़ाइल बदलें:

Postgresql 9.3

Postgresql 9.3

Postgresql 9.4

Postgresql 9.3

अगले कदम के लिए किया जाता है: पुन: प्रारंभ हो अपने डाटाबेस उदाहरण:

service postgresql-9.3 restart

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

ALTER USER db_user with password 'db_password';


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

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

$>  sudo nano /etc/postgresql/9.3/main/pg_hba.conf
  1. बदलें सहकर्मी के साथ md5

इसलिए इसे बदल दिया जाएगा:

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

# 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

इस:

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

# 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. फिर पीजी सर्वर को फिर से शुरू करें:

    $> Sudo सेवा PostgreSQL पुनः आरंभ

नीचे पोस्टग्रेज से जुड़ने के लिए उपयोग किए जाने वाले METHODS की सूची दी गई है:

# 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.

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

TIP: अगर यह पोस्टग्रेज के बाद काम नहीं करता है तो टर्मिनल को बंद करें और फिर से खोलें।


15
sudo psql --host=localhost --dbname=database-name --username=postgres

इससे मेरी समस्या हल हो गई


3
मुझे नहीं लगा कि यह इतना आसान होगा, लेकिन इसने मेरे लिए डेबियन 9 के तहत काम किया
हेडन थ्रिंग

यह Ubuntu 19.10 पर काम कर रहा है
विट्ठल रेड्डी

धन्यवाद, यह उबंटू 19.10 और psql 12.3 पर काम कर रहा है
हैप्पी सिंह

10

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

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

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

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

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

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

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

@ Depa के निर्देशों के अनुसार अपडेट करें।

अर्थात

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

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


मैं उसी मुद्दे का सामना कर रहा हूं। लेकिन मुझे कौन सी अनुमति चाहिए, मुझे नहीं पता। क्या आप मेरी मदद कर सकते हैं। मुझे 'ls' कमांड के लिए आउटपुट मिल रहा है-rw-r----- 1 postgres postgres 4640 Jun 16 09:59 /etc/postgresql/9.5/main/pg_hba.conf
सन

8

यदि आप डिफ़ॉल्ट कॉन्फ़िगर रखना चाहते हैं, लेकिन एक विशिष्ट उपयोगकर्ता / db कनेक्शन के लिए सॉकेट कनेक्शन के साथ 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

इस उत्तर में "BEFORE" अन्य उत्तरों में अधिक विस्तार के योग्य है। यह पता चलता है कि pq_hba.conf फ़ाइल में psql रिकॉर्ड क्रमिक रूप से डॉक्स में बताया गया है: postgresql.org/docs/11/static/auth-pg-hba-conf.html
eaydin

# TYPE DATABASE USER ADDRESS METHOD लोकल यूजरनेम dbname md5 # <- यह पंक्ति क्रम में नहीं है
किरी उपाय

7

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

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

6

उपरोक्त संपादन मेरे लिए काम करने के बाद, मुझे पता चला कि उन्हें बनाने के बाद मुझे पोस्टग्रेज सर्वर को फिर से शुरू करना होगा। Ubuntu के लिए:

sudo /etc/init.d/postgresql restart

6

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



5

मेरे लिए नीचे काम करता है:

psql -d myDb -U username -W

मैन psll-W --password Force psql to prompt for a password before connecting to a database. This option is never essential, since psql will automatically prompt for a password if the server demands password authentication. However, psql will waste a connection attempt finding out that the server wants a password. In some cases it is worth typing -W to avoid the extra connection attempt.
यारोस्लाव निकितेंको 18

3

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

#TYPE  DATABASE        USER            ADDRESS                 METHOD
local    all             all                                     trust

और पुनः लोड सर्वर को पोस्ट करता है।

# service postgresql-9.5 reload

Pg_hba.conf में परिवर्तन RESTART को सर्वर को पोस्ट करने की आवश्यकता नहीं है। सिर्फ RELOAD।


3

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

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

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

select * from pg_settings where setting~'pgsql';  

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

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

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 पथ सेटिंग्स सही होनी चाहिए!


3

pg_config विस्तार जानकारी के लिए है, एक्सटेंशन और क्लाइंट प्रोग्राम्स को PostgreSQL के खिलाफ संकलन और लिंक करने में मदद करने के लिए। यह मशीन पर सक्रिय PostgreSQL उदाहरण (ओं) के बारे में कुछ नहीं जानता, केवल बायनेरिज़।

pg_hba.conf Pg कैसे स्थापित किया गया था, इसके आधार पर कई अन्य स्थानों में दिखाई दे सकता है। मानक स्थान डेटाबेस के data_directory के भीतर pg_hba.conf है (जो / होम, / var / lib / pgsql, / var / lib / postgresql / [version] /, / opt / postgres /, आदि) में हो सकता है) लेकिन उपयोगकर्ता और packagers जहाँ भी वे इसे पसंद कर सकते हैं। दुर्भाग्य से।

केवल मान्य तरीके pg_hba.conf को ढूंढते हैं, चल रहे PostgreSQL उदाहरण से पूछें कि यह pg_hba.conf है या sysadmin से पूछें कि यह कहाँ है। आप यह पूछने पर भी भरोसा नहीं कर सकते हैं कि डेटादिर कहां है और पोस्टग्रैसक्.एल.एफएस को पार्स कर रहा है क्योंकि एक आईआईटी स्क्रिप्ट पीजी शुरू करते समय -c hba_file = / कुछ / अन्य / पथ की तरह हो सकता है।

आप क्या करना चाहते हैं PostgreSQL से पूछें:

SHOW hba_file;

यह कमांड सुपरसुअर सत्र पर चलाया जाना चाहिए, इसलिए शेल स्क्रिप्टिंग के लिए आप कुछ ऐसा लिख ​​सकते हैं:

psql -t -P format=unaligned -c 'show hba_file';

और यह सुनिश्चित करने के लिए कि यह सही है, पर्यावरण चर, PGUSER, PGDATABASE आदि सेट करें।

हां, यह कुछ हद तक चिकन और अंडे की समस्या है, जिसमें यदि उपयोगकर्ता कनेक्ट नहीं कर सकता (कहे, संपादन pg_hba.conf को खराब करने के बाद) आप इसे ठीक करने के लिए pg_hba.conf नहीं पा सकते हैं।

एक अन्य विकल्प पीएस कमांड के आउटपुट को देखने और यह देखने के लिए है कि क्या पोस्टमास्टर डेटा डायरेक्टरी तर्क-डी वहां दिखाई दे रहा है, जैसे

ps aux  | grep 'postgres *-D'

चूंकि pg_hba.conf डेटा डायरेक्टरी के अंदर होगा (जब तक कि आप डेबियन / उबंटू या कुछ व्युत्पन्न और अपने पैकेज का उपयोग नहीं कर रहे हैं)।

यदि आप विशेष रूप से उबंटू प्रणालियों को लक्षित कर रहे हैं, तो डेबियन / उबंटू संकुल से पोस्टग्रेक्यूएल के साथ स्थापित करना थोड़ा आसान हो जाता है। आपको हाथ से संकलित-स्रोत पीजी से निपटने की ज़रूरत नहीं है कि किसी के initdb'd के लिए उनके घर की डायर, या एंटरप्राइजडीबी पीजी / इन / ऑप्ट आदि में स्थापित करें, आप pg_wrapper, डेबियन / उबंटू मल्टी से पूछ सकते हैं -version Pg प्रबंधक, जहाँ PostgreSQL pg_wclpper से pg_lsclusters कमांड का उपयोग कर रहा है।

यदि आप कनेक्ट नहीं कर सकते हैं (Pg नहीं चल रहा है, या आपको कनेक्ट करने के लिए pg_hba.conf को संपादित करने की आवश्यकता है) आपको pg_hba.conf फ़ाइलों के लिए सिस्टम खोजना होगा। मैक और लिनक्स पर कुछ सूडो लगता है / -type f -name pg_hba.conf करेंगे। यदि आप एक से अधिक हैं, तो यह सुनिश्चित करने के लिए कि यह सही PostgreSQL संस्करण है, उसी निर्देशिका में PG_VERSION फ़ाइल की जाँच करें। (यदि pg_hba.conf / etc / में है, तो इसे अनदेखा करें, यह इसके बजाय मूल निर्देशिका नाम है)। यदि आपके पास समान PostgreSQL संस्करण के लिए एक से अधिक डेटा निर्देशिका है, तो आपको डेटाबेस का आकार देखना होगा, पीएस से चलने वाली पोस्टग्रेज की कमांड लाइन को यह देखने के लिए देखें कि क्या यह डेटा निर्देशिका -D तर्क मेल खाता है जहां आप संपादन कर रहे हैं, आदि। । /ubuntu/256534/how-do-i-find-the-path-to-pg-hba-conf-from-the-shell/256711


2

मेरा मुद्दा यह था कि मैंने कोई सर्वर टाइप नहीं किया। मुझे लगा कि प्लेसहोल्डर की वजह से यह डिफॉल्ट है लेकिन जब मैंने लोकलहोस्ट टाइप किया तो इसने काम किया।


2

यदि आप क्लाउड 9 में इस फ़ाइल का पता लगाने की कोशिश कर रहे हैं, तो आप कर सकते हैं

sudo vim /var/lib/pgsql9/data/pg_hba.conf

प्रेस Iसंपादित करें / डालने के लिए, प्रेस ESC3 बार और प्रकार :wqफ़ाइल को सहेजने और बंद हो जाएगा


2

यदि आप इस मुद्दे को रेल के साथ सामना कर रहे हैं और आप जानते हैं कि आपने पहले से ही सही अधिकारों के साथ पासवर्ड के साथ उस उपयोगकर्ता-नाम का निर्माण किया है, तो आपको बस अपने database.yml फ़ाइल के अंत में अनुसरण करना होगा।

host: localhost

समग्र फ़ाइल नीचे की तरह दिखाई देगी

development:
  adapter: postgresql
  encoding: unicode
  database: myapp_development
  pool: 5
  username: root
  password: admin
  host: localhost

आपको pg_hba.confफाइल को छूने की जरूरत नहीं है । खुश कोडिंग


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.