Mostrando entradas con la etiqueta PostgreSQL. Mostrar todas las entradas
Mostrando entradas con la etiqueta PostgreSQL. Mostrar todas las entradas

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=#
Mizaq's Blog

Entradas populares