PostgreSQL: zmiana hasła dla użytkownika nie działa


9
  • Zainstalowałem PostgreSQLna EC2komputerze i teraz chcę zmienić hasło użytkownikapostgres
  • ja robię
$ sudo -u postgres psql
psql (9.1.5)
Type "help" for help.

postgres=# ALTER USER postgres WITH PASSWORD 'newpasswd';
ALTER ROLE
  • Następnie wychodzę z powłoki i próbuję zalogować się przy użyciu nowego hasła
$ psql -U postgres -W
Password for user postgres: 
psql: FATAL:  Peer authentication failed for user "postgres"

Moja PostgreSQLwersja to

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

Co robię źle?

Dziękuję Ci

AKTUALIZACJA Wprowadziłem zmiany pg_hba.confi tak to teraz wygląda

# 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

Następnie ponownie uruchomiłem postgres

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

Próbowałem zalogować się ponownie, ale nie powiodło się

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

Prawdopodobnie stare hasło jest nadal przechowywane w pliku ~ / .pgpass.

Nie, jest tam monit o hasło. Myślę, że pg_hba.confjest skonfigurowany w taki sposób, że nie akceptuje uwierzytelniania hasłem.

@willglynn, proszę sprawdzić moją aktualizację, znowu się nie udaje, nawet po wprowadzeniu zmianpg_hba.conf
— daydreamer

Odpowiedzi:


9

Jak powiedział willglynn, prawdopodobnie jest to plik pg_hba.conf.

Jeśli masz następujący wiersz:

local   all    all     peer

następnie zmień na:

local   all    all     md5

To powinno pozwolić Ci zalogować się przy użyciu nowego hasła (zakładając, że poprawnie je podałeś) :)


Cześć @David, próbowałem, jak wspomniałeś, ale nadal się nie udaje, sprawdź moją aktualizację tak, jak to zrobiłem, dziękuję
— marzyciel

Nadal istnieje peerlinia, która dotyczy połączeń lokalnych (gniazd domeny UNIX) od postgresużytkownika. To się nie powiedzie, chyba że daleki koniec działa jako postgresużytkownik systemu operacyjnego . Zobacz dokumentację pg_hba.conf dla lepszego zrozumienia.

Chociaż mogłem biegać django manage.py syncdb, nadal będę czytać o pg_hba.confdokumentacji, o której wspominałeś, wielkie dzięki za pomoc
— marzyciel

Chciałem tylko dodać-h localhost
— Mike

5

Chciałem tylko dodać to oprócz zmiany pg_hba.confpliku z

local   all    all     peer

do

local   all    all     md5

Zgodnie z przyjętą odpowiedzią jedynym sposobem, w jaki mogłem się zalogować po zrobieniu tego samego, co OP, było przekazanie -hflagi podczas próby zalogowania się.

$ psql -U postgres -h localhost

Mam nadzieję, że pomoże to w przyszłości. Doprowadzało mnie to do szału!


0

Masz to...

# 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

zmień przez to:

# 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

i zrestartuj usługę postgresql przez

sudo /etc/init.d/posgresql restart

ta praca dla mnie


Podczas zmiany pg_hba.confnie musisz ponownie uruchamiać Postgres. Wystarczy przeładować konfigurację. np. pg_ctl ... reloadlubselect pg_reload_conf()
— a_horse_w_no_name

Po prostu przeładuj ... nie wiedziałem ... dzięki
— Israel L Rosas

-1

Dla ludzi, którzy wariują po wielokrotnej zmianie hasła i próbowaniu wszystkiego, co tu wspomniano, pamiętaj o sprawdzeniu ważności ważności użytkownika. Możesz ustawić opcję „nigdy nie wygasaj” w ten sposób w psql 9.x:

ALTER ROLE <username> VALID UNTIL 'infinity';

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.