it-swarm-eu.dev

PostgreSQL: změna hesla pro uživatele nefunguje

  • Nainstaloval jsem PostgreSQL na EC2 stroj a nyní chci změnit heslo uživatele postgres
  • Dělám
$ Sudo -u postgres psql
psql (9.1.5)
Type "help" for help.

postgres=# ALTER USER postgres WITH PASSWORD 'newpasswd';
ALTER ROLE
  • Poté opustím prostředí a pokusím se přihlásit pomocí nového hesla
$ psql -U postgres -W
Password for user postgres: 
psql: FATAL:  Peer authentication failed for user "postgres"

Moje PostgreSQL verze je

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

Co dělám špatně?

Děkuju

UPDATE Udělal jsem změny v pg_hba.conf a takto to vypadá nyní

# 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

Pak jsem restartoval postgres

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

Zkoušel jsem se znovu přihlásit, ale selhal

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

Jak řekl Willglynn, je to pravděpodobně váš soubor pg_hba.conf.

Pokud máte následující řádek:

local   all    all     peer

pak to změňte na:

local   all    all     md5

To by vám pak mělo umožnit přihlášení pomocí nového hesla (za předpokladu, že jej správně zadáte) :)

9
David S

Chtěl jsem to jen přidat kromě změny souboru pg_hba.conf Z

local   all    all     peer

na

local   all    all     md5

Pokud jde o přijatou odpověď, jediným způsobem, jak jsem se mohl přihlásit poté, co jsem udělal totéž, co OP dělal, bylo při pokusu o přihlášení projít příznakem -h.

$ psql -U postgres -h localhost

Doufejme, že to někomu v budoucnu pomůže. To mě nutilo oříšky!

5
JTG

Máš tohle ...

# 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

změnit tímto:

# 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

a restartujte postgresql službu pomocí

Sudo /etc/init.d/posgresql restart

tato práce pro mě

0
Israel L Rosas