En este post voy a mostrar cómo solucionar el error de PostgreSQL que aparece al iniciar sesión. El error dice algo así:
Peer authentication failed for user usuario
Esto ocurre cuando intentamos iniciar sesión en psql.
Solución más común
El problema más común es que no estamos especificando el host, que sería localhost (aunque parece simple, así es).
Entonces, en lugar de loguearnos de la siguiente manera:
psql -U tu_usuario tu_base_de_datos
Hay que hacerlo así:
psql -U tu_usuario -h 127.0.0.1 tu_base_de_datos
En la mayoría de casos, esto funciona, y si no, veamos el siguiente paso.
Editar archivo pg_hba.conf
Esto requiere un poco más de trabajo pero igualmente soluciona las cosas. Hay que editar (con sudo, si es necesario) el archivo llamado pg_hba.conf ubicado en:
/etc/postgresql/[tu_version]/main
Si no sabes cuál es la versión, haz un cd /etc/postgresql/
y luego un ls
para listar los directorios, entre ellos debe estar un directorio con la versión, entra al mismo y después a main.
Dentro del archivo, busca la siguiente línea (está casi al final, hay 4 líneas casi iguales pero es la primera):
local all postgres peer
(estará separada con más espacios)
Y cambia peer por trust de manera que quede así:
local all postgres trust
Guarda cambios y reinicia el servidor con:
sudo service postgresql restart
Ahora inicia sesión (psql -U postgres
) con el usuario postgres (tranquilo, podrás iniciar sesión con otro usuario luego de hacer esto) y cambia tu contraseña con:
alter user postgres with password 'contraseña_aquí';
Cierra psql y vuelve a editar el archivo pg_hba.conf. Ahora, la línea que decía así (la que acabas de cambiar):
local all postgres trust
Debe decir así:
local all postgres md5
Reinicia de nuevo el servidor con:
sudo service postgresql restart
E intenta iniciar sesión de nuevo. Si no funciona con este método, mira la primer solución, es decir, especifica el host.