psql: FATAL: la autenticación de pares falló para el usuario


12

Acabo de instalar PostgreSQL 9.4 en Ubuntu 15.10.

  1. Creé un usuario con createuser -P myuser
  2. Creé una base de datos con createdb -O myuser mydatabase
  3. Edité pg_hba.confy agreguélocal mydatabase myuser md5
  4. Reinicié PostgreSQL con sudo service postgresql restart

El usuario myuser es solo un usuario de PostgresSQL y no tiene una cuenta de usuario en Ubuntu.

Cuando intento conectarme a la base de datos psql -W mydatabase myuser, falla psql: FATAL: Peer authentication failed for user "myuser".

PostgreSQL se está ejecutando ...

● postgresql.service - PostgreSQL RDBMS
   Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
   Active: active (exited) since Thu 2016-03-03 09:53:00 CET; 9min ago
  Process: 22219 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
 Main PID: 22219 (code=exited, status=0/SUCCESS)

Mar 03 09:53:00 SERVER01 systemd[1]: Starting PostgreSQL RDBMS...
Mar 03 09:53:00 SERVER01 systemd[1]: Started PostgreSQL RDBMS.

... y escuchando.

Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 localhost:postgresql    *:*                     LISTEN
tcp6       0      0 localhost:postgresql    [::]:*                  LISTEN
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ACC ]     STREAM     LISTENING     151534   /var/run/postgresql/.s.PGSQL.5432

¿Qué debo hacer para conectarme con el usuario myuser a la base de datos mydatabase ?

Respuestas:


16

En una nueva instalación de hace unos días, la segunda línea de mi pg_hba.confes

local   all             all              peer

Creo que este es el que hace que su intento de conexión falle.

El orden de las reglas es importante aquí: se considerará la primera que coincida con el método de acceso, el nombre de usuario, el nombre de la base de datos y el rango de IP de origen. Si falla, entonces no hay un segundo intento, por lo que el intento de conexión probablemente fallará. O, como dice la documentación :

No hay "caída" o "copia de seguridad": si se elige un registro y la autenticación falla, no se consideran los registros posteriores. Si ningún registro coincide, se deniega el acceso.

La solución es fácil: elimine la línea anterior si no planea usar la peerautenticación o mueva su regla específica por encima de esta.


Mover la línea funcionó.
— Daniel

¿Cómo podríamos almacenar la contraseña usando una autenticación 'md5' para que no tengamos que escribirla una y otra vez ...?
— sk

3

Primero ... compruebe que tiene las líneas que permiten al usuario myuser en pg_hba.conf. Por ejemplo:

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

O cualquier otra línea de permiso para IPV4 (e IPv6 si la usa) con: TIPO BASE DE DATOS MÉTODO DE DIRECCIÓN DEL USUARIO

Después de esta comprobación, ejecute el psql de la siguiente manera:

psql -h localhost -U myuser mydatabase

Y luego, la solicitud solicitada, ingrese la contraseña del usuario myuser.


1
Y, por supuesto, elimine la autenticación de igual.
— Alvaro Neto

Tengo una instancia que actualicé para permitir conexiones remotas, la dirección de escucha se establece '*'y agrega la host all all 0.0.0.0/0 md5regla. No tuve que eliminar la autenticación entre pares. Acabo de trabajar con el -h localhostparam. La mejor respuesta ya que lo más probable es que no tenga que tocar la configuración en una instalación estándar.
— Mark Carpenter Jr
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.