PostgreSQL: उपयोगकर्ता के लिए पासवर्ड बदलना काम नहीं कर रहा है


9
  • मैंने मशीन PostgreSQLपर इंस्टॉल किया EC2और अब मैं उपयोगकर्ता का पासवर्ड बदलना चाहता हूंpostgres
  • मैं करता हूँ
$ sudo -u postgres psql
psql (9.1.5)
Type "help" for help.

postgres=# ALTER USER postgres WITH PASSWORD 'newpasswd';
ALTER ROLE
  • फिर मैं शेल से बाहर निकलता हूं और नए पासवर्ड के साथ लॉगिन करने का प्रयास करता हूं
$ psql -U postgres -W
Password for user postgres: 
psql: FATAL:  Peer authentication failed for user "postgres"

मेरा PostgreSQLसंस्करण है

$ psql --version
psql (PostgreSQL) 9.1.5
contains support for command-line editing

क्या है कि मैं गलत कर रहा हूँ?

धन्यवाद

अद्यतन मैंने इसमें बदलाव किए pg_hba.confऔर अब यह दिखता है

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

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
#local   all             all                                     peer
local   all             all                                     md5
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

फिर मैंने फिर से शुरू किया postgres

$ sudo /etc/init.d/postgresql restart
 * Restarting PostgreSQL 9.1 database server                                                                                                                                               [ OK ] 

मैंने फिर से प्रवेश करने की कोशिश की, लेकिन असफल रहा

$ psql -U postgres -W
Password for user postgres: 
psql: FATAL:  Peer authentication failed for user "postgres"

संभवतः पुराना पासवर्ड अभी भी आपकी ~ / .pgpass फ़ाइल में संग्रहीत है।

नहीं, वहाँ एक पासवर्ड संकेत है। मुझे लगता pg_hba.confहै कि इसे इस तरह से सेट किया गया है कि यह पासवर्ड प्रमाणीकरण को स्वीकार नहीं कर रहा है।

@willglynn, कृपया मेरे अपडेट की जांच करें, यह परिवर्तन करने के बाद भी फिर से विफल हो रहा हैpg_hba.conf
दिवास्वप्न

जवाबों:


9

जैसे विलग्लिन ने कहा, यह संभवतः आपकी pg_hba.conf फ़ाइल है।

यदि आपके पास निम्न पंक्ति है:

local   all    all     peer

फिर इसे बदल दें:

local   all    all     md5

फिर आपको अपने नए पासवर्ड के साथ लॉगिन करना चाहिए (यह मानते हुए कि आप इसे सही तरीके से आपूर्ति करते हैं) :)


हाय @ डेविड, मैंने आपके बताए अनुसार प्रयास किया, लेकिन यह अभी भी विफल है, कृपया मेरे अपडेट की जांच करें जैसा मैंने किया था, धन्यवाद
daydreamer

उपयोगकर्ता peerसे स्थानीय (UNIX डोमेन सॉकेट) कनेक्शन पर लागू होने वाली एक पंक्ति अभी भी है postgres। यह तब तक विफल रहेगा जब तक ओएस postgresउपयोगकर्ता के रूप में दूर का अंत नहीं चल रहा है । बेहतर समझ के लिए pg_hba.conf प्रलेखन देखें ।

हालाँकि मैं चलाने में सक्षम था django manage.py syncdb, फिर भी मैंने pg_hba.confआपके द्वारा बताए गए दस्तावेज़ों के बारे में पढ़ा , आपकी मदद के लिए बहुत धन्यवाद
daydreamer

मुझे बस जोड़ने की जरूरत है-h localhost
माइक

5

मैं सिर्फ pg_hba.confफ़ाइल को बदलने के अलावा जोड़ना चाहता था

local   all    all     peer

सेवा

local   all    all     md5

स्वीकृत उत्तर के अनुसार, ओपी करने के लिए एक ही काम करने के बाद मैं लॉग इन कर सकता था, -hलॉगिन करने की कोशिश करते समय ध्वज को पास करना था ।

$ psql -U postgres -h localhost

उम्मीद है, यह भविष्य में किसी की मदद करेगा। यह मुझे पागल कर रहा था!


0

तुम्हारे पास ये हैं...

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

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
#local   all             all                                     peer
local   all             all                                     md5

इसके द्वारा परिवर्तन करें:

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

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
#local   all             all                                     md5

और पोस्टग्रेजिक सेवा को फिर से शुरू करें

sudo /etc/init.d/posgresql restart

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


बदलते समय pg_hba.confआपको पोस्टग्रेज को पुनः आरंभ करने की आवश्यकता नहीं है। कॉन्फ़िगरेशन को पुन: लोड करना पर्याप्त है। जैसे pg_ctl ... reloadयाselect pg_reload_conf()
a_horse_with_no_name

बस पुनः लोड करें ... मुझे नहीं पता था ... धन्यवाद
इज़राइल एल

-1

लोगों के लिए, जो कई बार पासवर्ड बदलने के बाद पागल हो रहे हैं और यहां बताई गई हर चीज को आजमा रहे हैं, उपयोगकर्ता की वैधता समाप्ति की जांच करना याद रखें। आप इसे 'कभी समाप्त न होने' के लिए सेट कर सकते हैं जैसे कि psql 9.x में:

ALTER ROLE <username> VALID UNTIL 'infinity';

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