domingo, 12 de abril de 2015

FATAL: la autentificación Peer falló para el usuario «postgres»

Error de autentificación Peer en Psql

De manera predeterminada PostgreSQL en GNU/Linux Debian, deja habilitado el mecanismo de autentificación PEER para conexiones locales, por lo tanto si intenta conectarse desde la sesión de un usuario del sistema operativo, que no es usuario de base de datos, obtendrá un error de autentificación. (psql: FATAL:  la autentificación Peer falló para el usuario «postgres»), porque psql está obteniendo el nombre del usuario desde el propio Kernel para luego usarlo con nombre de usuario de base de datos al momento de intentar la autentificación.


Primer forma de arreglarlo

La primer solución no requiere cambiar nada. Solo consiste en utilizar la autentificación correctamente, iniciando sesión con postgres a nivel de sistema operativo y luego intentar autenticarse en psql.

usuario@laptop:~$ su postgres Contraseña: usuario@laptop:/home/usuario$ psql -d mi_basedatos psql (9.4.0) Digite «help» para obtener ayuda. mi_basedatos=#

La segunda forma de arreglarlo

La otra posibilidad es cambiar la configuración de autentificación, cambiándola de PEER a MD5, en el archivo de configuración de PostgreSQL.

Es muy recomendable hacer una copia del archivo de configuración antes de modificarlo, para hacer la copia introduzca el siguiente comando:
$ sudo cp /etc/postgresql/9.4/main/pg_hba.conf /etc/postgresql/9.4/main/pg_hba.conf_bk

Con el siguiente comando se hace la modificación automáticamente, pero tiene que copiar y pegar el comando con todos los espacios en blanco, tal y cómo está a continuación:
$ sed -i -e 's/local all postgres peer/local all postgres md5/g' /etc/postgresql/9.4/main/pg_hba.conf

Para comprobar que el cambio se aplicó correctamente introduzca el siguiente comando:
$ sudo diff /etc/postgresql/9.4/main/pg_hba.conf /etc/postgresql/9.4/main/pg_hba.conf_bk 85c85 < local all postgres md5 --- > local all postgres peer

Si el cambio no se hizo correctamente debe editar el archivo manualmente cambiando "peer" por "md5" en la linea que contiene el siguiente texto:
# Database administrative login by Unix domain socket local all postgres peer

Debería quedar así:
# Database administrative login by Unix domain socket local all postgres md5

Para editar el archivo introduzca el siguiente comando:
$ sudo gedit /etc/postgresql/9.4/main/pg_hba.conf

Finalmente, ya sea que haya hecho el cambio automáticamente o editando el archivo de configuración manualmente, deberá reiniciar el servicio de postgres para que los cambios surtan efectos, para hacerlo introduzca el siguiente comando:
$ sudo /etc/init.d/postgresql restart [sudo] password for usuario: [ ok ] Restarting postgresql (via systemctl): postgresql.service.

Ahora si podrá autentificarse en psql aunque el usuario del sistema operativo no sea usuario de base de datos. Tome en cuenta que siempre deberá indicar el usuario con el que intentará iniciar sesión, con el parámetro -U
usuario@laptop:~$ psql -U postgres -d mi_basedatos Contraseña para usuario postgres: psql (9.4.0) Digite «help» para obtener ayuda. mi_basedatos=#

9 comentarios:

  1. Muchas gracias por el artículo. Desconocía lo de la 'autentificación PEER' y no entendía porqué no me podía conectar con la base de datos desde bash

    ResponderEliminar
  2. Muchas gracias por tu aporte, ya me estaba rompiendo la cabeza, soy novato con muchas ganas de aprender. thanks!

    ResponderEliminar

  3. My developer is trying to convince me to move to .net from PHP. I have always disliked the idea because of the costs. But he's tryiong none the less. I've been using WordPress on various websites for about a year and am anxious about switching to another platform. I have heard excellent things about blogengine.net. Is there a way I can import all my wordpress posts into it? Any help would be really appreciated! outlook 365 login

    ResponderEliminar
  4. Bien
    Despues de un rato largo pude entender la diferencia entre las dos formas de autentificar para postgre
    Gracias

    ResponderEliminar
  5. Muchísimas gracias, dos días buscando por qué desde línea de comandos funcionaban los php contra pg, y desde apache no hacían nada. Al final apache2 usa el usuario local. Gracias de nuevo.
    Un saludo.

    ResponderEliminar
  6. Want to know just how much is your possible loan payment. mortgage payment calculator canada According towards the Canadian Association of Mortgage Professionals, this past year 10% of Canadian mortgage holders accessed a normal $49,000 of equity using their homes. mortgage payment calculator canada

    ResponderEliminar
  7. Sports Picks of the Day 카지노사이트 카지노사이트 온카지노 온카지노 982Soccer Predictions for Today Soccer and Football Prediction

    ResponderEliminar

Gracias por dejar tu comentario, por favor sea respetuoso...

Mizaq's Blog

Entradas populares