PostgreSQL: cambiar la contraseña de un usuario no funciona

9
  • Lo instalé PostgreSQLen la EC2máquina y ahora quiero cambiar la contraseña del usuariopostgres
  • hago
$ sudo -u postgres psql
psql (9.1.5)
Type "help" for help.

postgres=# ALTER USER postgres WITH PASSWORD 'newpasswd';
ALTER ROLE
  • Luego salgo del shell e intento iniciar sesión con una nueva contraseña
$ psql -U postgres -W
Password for user postgres: 
psql: FATAL:  Peer authentication failed for user "postgres"

Mi PostgreSQLversion es

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

¿Qué es lo que estoy haciendo mal?

Gracias

ACTUALIZACIÓN Hice cambios en pg_hba.confy así es como se ve ahora

# 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

Luego reinicié el postgres

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

Traté de iniciar sesión nuevamente, pero fallé

$ psql -U postgres -W
Password for user postgres: 
psql: FATAL:  Peer authentication failed for user "postgres"
soñador
fuente
Probablemente la contraseña anterior todavía esté almacenada en su archivo ~ / .pgpass.
No, hay un mensaje de contraseña allí. Estoy pensando que pg_hba.confestá configurado de tal manera que no acepta la autenticación de contraseña.
@willglynn, compruebe mi actualización, está fallando nuevamente incluso después de hacer cambios enpg_hba.conf
daydreamer el

Respuestas:

9

Como dijo willglynn, probablemente sea su archivo pg_hba.conf.

Si tiene la siguiente línea:

local   all    all     peer

luego cámbielo a:

local   all    all     md5

Eso debería permitirle iniciar sesión con su nueva contraseña (suponiendo que la proporcione correctamente) :)

David S
fuente
Hola @David, intenté como mencionaste, pero aún falla, por favor revisa mi actualización como lo hice, gracias
daydreamer
Todavía hay una peerlínea que se aplica a las conexiones locales (sockets de dominio UNIX) del postgresusuario. Eso fallará a menos que el otro extremo se ejecute como postgresusuario del sistema operativo . Consulte la documentación de pg_hba.conf para una mejor comprensión.
Aunque pude correr django manage.py syncdb, todavía leeré sobre la pg_hba.confdocumentación que mencionaste, muchas gracias por tu ayuda
soñador el
Solo necesitaba agregar-h localhost
Mike
5

Solo quería agregar eso además de cambiar el pg_hba.confarchivo de

local   all    all     peer

a

local   all    all     md5

Según la respuesta aceptada, la única forma en que podía iniciar sesión después de hacer lo mismo que estaba haciendo el OP era pasar la -hbandera al intentar iniciar sesión.

$ psql -U postgres -h localhost

Con suerte, esto ayudará a alguien en el futuro. Me estaba volviendo loco!

JTG
fuente
0

Tienes esto...

# 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

cambiar por esto:

# 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

y reinicie el servicio postgresql por

sudo /etc/init.d/posgresql restart

este trabajo para mi

Israel L Rosas
fuente
Al cambiar pg_hba.confno necesita reiniciar Postgres. Recargar la configuración es suficiente. por ejemplo, pg_ctl ... reloadoselect pg_reload_conf()
a_horse_with_no_name
Solo vuelva a cargar ... no lo sabía ... gracias
Israel L Rosas
-1

Para la gente, que se está volviendo loca después de cambiar la contraseña muchas veces y probar todo lo mencionado aquí, recuerde verificar la caducidad de la validez del usuario. Puede configurarlo para que 'nunca caduque' así en psql 9.x:

ALTER ROLE <username> VALID UNTIL 'infinity';
Kirpit
fuente