web-dev-qa-db-fra.com

PostgreSQL: la modification du mot de passe d'un utilisateur ne fonctionne pas

  • J'ai installé PostgreSQL sur EC2 machine et maintenant je veux changer le mot de passe de l'utilisateur postgres
  • Je fais
$ Sudo -u postgres psql
psql (9.1.5)
Type "help" for help.

postgres=# ALTER USER postgres WITH PASSWORD 'newpasswd';
ALTER ROLE
  • Ensuite, je quitte le shell et essaie de me connecter avec un nouveau mot de passe
$ psql -U postgres -W
Password for user postgres: 
psql: FATAL:  Peer authentication failed for user "postgres"

Ma version PostgreSQL est

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

Qu'est-ce que je fais mal?

Je vous remercie

MISE À JOUR J'ai apporté des modifications dans pg_hba.conf et voici à quoi ça ressemble maintenant

# 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

J'ai ensuite redémarré le postgres

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

J'ai essayé de me reconnecter, mais j'ai échoué

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

Comme l'a dit willglynn, c'est probablement votre fichier pg_hba.conf.

Si vous avez la ligne suivante:

local   all    all     peer

puis changez-le en:

local   all    all     md5

Cela devrait alors vous permettre de vous connecter avec votre nouveau mot de passe (en supposant que vous le fournissez correctement) :)

9
David S

Je voulais juste ajouter cela en plus de changer pg_hba.conf fichier de

local   all    all     peer

à

local   all    all     md5

Selon la réponse acceptée, la seule façon de me connecter après avoir fait la même chose que l'OP était de passer le -h drapeau lors de la tentative de connexion.

$ psql -U postgres -h localhost

J'espère que cela aidera quelqu'un à l'avenir. Ça me rendait fou!

5
JTG

Tu as ceci...

# 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

changer par ceci:

# 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

et redémarrez le service postgresql en

Sudo /etc/init.d/posgresql restart

ce travail pour moi

0
Israel L Rosas