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.