Postgresql: la autenticación de contraseña falló para el usuario "postgres"


432

He instalado PostgreSQL 8.4, el cliente Postgres y Pgadmin 3. La autenticación falló para el usuario "postgres" tanto para el cliente de consola como para Pgadmin. Escribí usuario como "postgres" y contraseña "postgres", porque funcionaba antes. Pero ahora la autenticación ha fallado. Lo hice antes un par de veces sin este problema. ¿Qué tengo que hacer? ¿Y que pasa?

psql -U postgres -h localhost -W
Password for user postgres: 
psql: FATAL:  password authentication failed for user "postgres"
FATAL:  password authentication failed for user "postgres"

1
En mi caso, la conexión falla porque la contraseña es demasiado compleja ...
JJD

3
Asegúrese de leer toda esta página. Tuve que hacer varias cosas para que esto funcionara. Primero, el ALTERpaso , luego edito mi pg_hba.confarchivo , luego reinicio postgres .
elrobis


También asegúrese de no tener dos instancias de Postgres ejecutándose: una en Windows y otra en Docker. Docker no me informó que el puerto ya estaba ocupado. Entonces, la herramienta se conectó a la máquina de Windows Postgres, mientras que en los Docker Postgers, todo estaba bien.
koppor

Respuestas:


751

Si no recuerdo mal, el usuario postgresno tiene configurada una contraseña DB en Ubuntu por defecto. Eso significa que solo puede iniciar sesión en esa cuenta utilizando la cuenta de postgres usuario del sistema operativo .

Suponiendo que tiene rootacceso en el cuadro, puede hacer:

sudo -u postgres psql

Si eso falla con un database "postgres" does not existserror, lo más probable es que no esté en un servidor Ubuntu o Debian :-) En este caso, simplemente agregue template1al comando:

sudo -u postgres psql template1

Si alguno de esos comandos falla con un error psql: FATAL: password authentication failed for user "postgres", verifique el archivo /etc/postgresql/8.4/main/pg_hba.conf: Debe haber una línea como esta como la primera línea sin comentarios:

local   all         postgres                          ident

Para las versiones más nuevas de PostgreSQL en identrealidad podría serpeer . Eso también está bien.

Dentro del psqlshell puede darle al usuario de DB postgres una contraseña:

ALTER USER postgres PASSWORD 'newPassword';

Puede abandonar el psqlshell escribiendo CtrlDo con el comando\q .

Ahora debería poder darle a pgAdmin una contraseña válida para el superusuario de DB y también será feliz. :-)


Eso está mejor, gracias! psql es funciona. Pero aún tengo problemas con pgadmin3: me ha pedido una contraseña para el usuario root de mi sistema. (extraño para mí) pg_hba.conf tal como tú dices.
I159

Agregaría para luego salir de la consola usando '\ q'. Me tomó un tiempo encontrar eso :)
hakunin

2
Tenga en cuenta que pg_hba.conf debe tener el usuario postgres configurado identpara que los primeros pasos funcionen. Si ya lo configuró en md5 u otra cosa, no podrá iniciar sesión automáticamente.
Cerin

80
Muy bonita Para otros usuarios nuevos, NO OLVIDES EL SEMICOLON al final de la línea ALTER USER.
itsols

3
@itsols Dijiste: "Muy agradable. Para otros usuarios nuevos, NO OLVIDES EL SEMICOLON al final de la línea ALTER USER" ... ¡Acabas de terminar una prueba de cuatro horas! Me siento taaaan estúpido y agradecido en este momento. :-D
frozenjim

148

La respuesta del personal es correcta, pero si desea automatizar aún más puede hacer:

$ sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'postgres';"

¡Hecho! Has guardado Usuario = postgres y contraseña = postgres.

Si no tiene una contraseña para el usuario postgres ubuntu, haga lo siguiente:

$ sudo passwd postgres


Cuidado si tu contraseña contiene caracteres interesantes como '!'
Brian Peterson

45

Esto fue frustrante, la mayoría de las respuestas anteriores son correctas, pero no mencionan que debe reiniciar el servicio de base de datos antes de que los cambios en el archivo pg_hba.conf surtan efecto.

así que si realiza los cambios como se mencionó anteriormente:

local all postgres ident

luego reinicie como root (en centos es algo así como el servicio de servicio postgresql-9.2 reiniciar) ahora debería poder acceder a la base de datos como el usuario postgres

$psql
psql (9.2.4)
Type "help" for help.

postgres=# 

Espero que esto agregue información para los nuevos usuarios de postgres


26
En ubuntu tipo: sudo service postgresql restart
Ann Kilzer

44
para uso RHEL7sudo systemctl restart postgresql.service
Spechal

1
¿Qué pasa en Mac?
AustinT

1
Para mac, consulte esta pregunta en SO stackoverflow.com/questions/7975556/…
Rohith Nandakumar

Gracias miguel Cambié la contraseña manualmente y mi pgAdmin no se conectó a databese hasta que reinicié el servidor de postgres.
Ustin

20

Edite el archivo pg_hba.conf, p. Ej. Con sudo emacs /etc/postgresql/9.3/main/pg_hba.conf

Cambie todos los métodos de autenticación a trust. Cambie la contraseña de Unix para el usuario "postgres". Reiniciar el servidor. Inicie sesión psql -h localhost -U postgresy use la contraseña de Unix que acaba de configurar. Si funciona, puede restablecer el archivo pg_hba.conf a los valores predeterminados.


1
Si te quedas completamente atascado, este es el único método garantizado. Cambie todos los métodos para confiar, reinicie db, luego como root:, sudo su - postgresluego establezca / arregle / desarme la contraseña para postgres db (y en el shell, si es necesario), luego restaure a seguro md5o identmétodos y reinicie nuevamente para que los valores se mantengan. Por cierto, en Cent / RedHat 9.4 el archivo se encuentra en:/var/lib/pgsql/9.4/data/pg_hba.conf
PapaK

17

Para aquellos que lo usan por primera vez y no tienen información sobre cuál es la contraseña, pueden seguir los pasos a continuación (suponiendo que esté en ubuntu):

  1. Abra el archivo pg_hba.conf en/etc/postgresql/9.x/main

     sudo vi pg_hba.conf 

    2.edite la línea de abajo

     local   all             postgres                                peer

    a

     local   all             postgres                                trust
  2. Reiniciar el servidor

      sudo service postgresql restart
  3. Finalmente, puede iniciar sesión sin necesidad de una contraseña como se muestra en la figuraFinalmente, puede iniciar sesión sin necesidad de una contraseña como se muestra en la figura

Ref aquí para más información


12

Si está intentando iniciar sesión en el shell postgres como usuario de postgres, puede usar los siguientes comandos.

cambiar a usuario postgres

# su - postgres

iniciar sesión en psql

# psql

Espero que ayude


3
su - postgrespide una contraseña en posgresql 9.5 en Ubuntu 16.04
Prashanth Chandra

3
su - postgreses el comando que sugiere la documentación oficial de fedora , pero también recibo una solicitud de contraseña. Para recibir todo el año que he seguido este correo electrónico foro postgres que utiliza el mismo comando que la respuesta aceptada aquí: sudo -u postgres psql. No olvide iniciar e iniciar el servidor de bases de datos.
icc97

11

Intente no usar el parámetro -W y deje la contraseña en blanco. A veces, el usuario se crea sin contraseña.

Si eso no funciona, restablezca la contraseña. Hay varias formas de hacerlo, pero esto funciona en muchos sistemas:

$ su root
$ su postgres
$ psql -h localhost
> ALTER USER postgres with password 'YourNewPassword';

7

Como regla general: NUNCA DEBE ESTABLECER UNA CONTRASEÑA PARA EL USUARIO DE POSTGRES .

Si necesita un acceso de superusuario de pgAdmin, cree otro superusuario. De esa manera, si las credenciales para ese superusuario se ven comprometidas, siempre puede ingresar en el host de la base de datos real y eliminar manualmente el superusuario utilizando

sudo -u postgres -c "DROP ROLE superuser;"

1
¿Cuál es la razón de esta regla general?
Gershom

2
Para que nunca puedas tener todos tus superusuarios comprometidos.
ardilgulez 22/03/18

1
¿Cómo puede establecer una contraseña para postgres llevar a que todos los superusuarios se vean comprometidos?
Gershom

44
establecer una contraseña no implica que todos los superusuarios se vean comprometidos, pero no establecer la contraseña garantizará que nunca se verán comprometidos todos los superusuarios. la razón es: cuando no establece la contraseña, se denegará cualquier intento de inicio de sesión de contraseña para postgres al usuario, mientras que aún puede usarlo usted mismo por confianza.
ardilgulez

7

Una vez que esté en su shell de postgres, ingrese este comando

postgres=# \password postgres

Después de ingresar este comando, se le pedirá que establezca su contraseña, simplemente configure la contraseña y luego intente.


3

Cuando instala postgresql, no se establece una contraseña para el usuario postgres, debe establecerla explícitamente en Unix mediante el comando:

sudo passwd postgres

Le pedirá su contraseña de sudo y luego le pedirá una nueva contraseña de usuario de postgres. Fuente



0

Aquí hay algunas combinaciones que intenté iniciar sesión:

# login via user foo
psql -Ufoo -h localhost

sudo -u postgres psql postgres

# user foo login to postgres db
psql -Ufoo -h localhost -d postgres

0

Tuve un problema similar. Ubuntu me dejó iniciar sesión en la consola con cualquier contraseña para superusuario. Excepto cuando me conecté con -h localhost en el comando de línea psql.

También observé que "localhost: 8080 / MyJSPSiteLogIn" - mostró: Fatal: error de autenticación con el usuario "usuario".

pg_hba.conf estaba bien.

Noté que dos versiones de postgres se ejecutaban en el mismo servicio.

Resuelto - desinstalando la versión inutil.


0

Me había enfrentado a un problema similar. Al acceder a cualquier base de datos, recibí el siguiente mensaje después de actualizar la contraseña "la autenticación de contraseña falló para el usuario" postgres "" en PGAdmin


Solución:

  1. Apague el servidor postgres
  2. Vuelva a ejecutar pgadmin
  3. pgadmin le pedirá la contraseña.
  4. Por favor ingrese la contraseña actual del usuario mencionado

Espero que resuelva tu problema

ingrese la descripción de la imagen aquí


-1

Espero que esto te ayude en poco tiempo. Puede cambiar la contraseña de postgres sql utilizando el siguiente comando.

Mando

sudo -u postgres psql

Y luego puedes actualizar la contraseña

Mando

Alterar la contraseña de postgres del usuario 'YOUR_NEW_PASSWORD';


1
Su respuesta solo contiene información que ya se ha agregado: stackoverflow.com/a/7696398/8283469
L. Guthardt el
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.