PostgreSQL: bir kullanıcı için şifre değiştirme çalışmıyor


9
  • Ben yüklü PostgreSQLüzerinde EC2makine ve şimdi kullanıcının şifresini değiştirmek istiyorumpostgres
  • Yaparım
$ sudo -u postgres psql
psql (9.1.5)
Type "help" for help.

postgres=# ALTER USER postgres WITH PASSWORD 'newpasswd';
ALTER ROLE
  • Sonra kabuktan çıkar ve yeni şifre ile giriş yapmaya çalışırım
$ psql -U postgres -W
Password for user postgres: 
psql: FATAL:  Peer authentication failed for user "postgres"

Benim PostgreSQLversiyonum

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

Neyi yanlış yapıyorum?

teşekkür ederim

GÜNCELLEME Değişiklik yaptım pg_hba.confve şimdi böyle görünüyor

# 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

Sonra yeniden başlattım postgres

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

Tekrar giriş yapmayı denedim, ancak başarısız oldum

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

Muhtemelen eski şifre hala ~ / .pgpass dosyanızda saklanmaktadır.

Hayır, orada bir şifre sorusu var. pg_hba.confParola kimlik doğrulamasını kabul etmeyecek şekilde ayarlandığını düşünüyorum .

@willglynn, lütfen güncellememi kontrol et, değişiklik yaptıktan sonra bile tekrar başarısız oluyorpg_hba.conf
— daydreamer

Yanıtlar:


9

Willglynn'in dediği gibi, muhtemelen pg_hba.conf dosyanız.

Aşağıdaki satırınız varsa:

local   all    all     peer

ardından şu şekilde değiştirin:

local   all    all     md5

Bu daha sonra yeni şifrenizle giriş yapmanıza izin verecektir (doğru şekilde sağladığınızı varsayarak) :)


Merhaba @David, bahsettiğin gibi denedim, ama hala başarısız, lütfen güncellememi yaptığım gibi kontrol et, teşekkür ederim
— daydreamer

Kullanıcının peeryerel (UNIX etki alanı soketleri) bağlantıları için geçerli olan bir satır var postgres. Uzak uç işletim sistemi postgreskullanıcısı olarak çalışmadığı sürece bu başarısız olur . Daha iyi anlamak için pg_hba.conf belgelerine bakın .

Koşabilmeme rağmen django manage.py syncdb, pg_hba.confbahsettiğiniz belgeleri hala okuyacağım , yardımlarınız için çok teşekkürler
— daydreamer

Sadece eklemem gerekiyordu-h localhost
— Mike

5

Ben sadece pg_hba.confdosyayı değiştirmek için ek olarak eklemek istedim

local   all    all     peer

için

local   all    all     md5

Kabul edilen cevaba göre, OP ile aynı şeyi yaptıktan sonra giriş yapabilmemin tek yolu -hgiriş yapmaya çalışırken bayrağı geçmekti .

$ psql -U postgres -h localhost

Umarım, bu gelecekte birine yardımcı olacaktır. Beni deli ediyordu!


0

Buna sahipsin ...

# 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

bununla değiştir:

# 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

ve postgresql hizmetini

sudo /etc/init.d/posgresql restart

bu iş benim için


Değiştirirken pg_hba.confsen Postgres yeniden gerekmez. Yapılandırmayı yeniden yüklemek yeterlidir. ör. pg_ctl ... reloadveyaselect pg_reload_conf()
— a_horse_with_no_name

Sadece yeniden yükle ... bilmiyordum ... teşekkürler
— İsrail L Rosas

-1

Parolayı birçok kez değiştirdikten ve burada bahsedilen her şeyi denedikten sonra çıldırmış olan kullanıcılar için, kullanıcının geçerlilik süresinin dolmasını kontrol etmeyi unutmayın. Psql 9.x sürümünde "asla sona ermeyecek" şekilde ayarlayabilirsiniz:

ALTER ROLE <username> VALID UNTIL 'infinity';

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.