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"
marzyciel
źródło
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ś) :)

David S.
źródło
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!

JTG
źródło
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

Izrael L. Rosas
źródło
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';
Kirpit
źródło