Cuando intento abrir psql con este comando:
psql -U postgresme sale este error:
psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL: Peer authentication failed for user "postgres"Pero se conecta correctamente cuando uso:
sudo -u postgres psql ¿Puede alguien explicar qué está sucediendo y cómo diagnosticar/solucionar este problema? Mi pg_hba.conf contiene lo siguiente:
# Database administrative login by Unix domain socket local all postgres peer # TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local all all md5 # IPv4 local connections: host all all 127.0.0.1/32 scram-sha-256 # IPv6 local connections: host all all ::1/128 scram-sha-256 # Allow replication connections from localhost, by a user with the # replication privilege. local replication all peerLa autenticación de pares significa que la conexión solo se permite si el nombre del usuario de la base de datos es el mismo que el nombre del usuario del sistema operativo.
Entonces, si ejecuta psql -U postgres como usuario root del sistema operativo o jimmy , no funcionará.
Puede especificar una asignación entre los usuarios del sistema operativo y los usuarios de la base de datos en pg_ident.conf .
Puedes editar tus archivos .conf con privilegios usando un editor, para mi caso es nano.
$sudo nano /etc/postgresql/14/main/pg_ident.confAsigne su usuario agregando esta línea
# MAPNAME SYSTEM-USERNAME PG-USERNAME user1 <computer-username> postgres Reemplace el <computer-username> con el Nombre de usuario del sistema, que se puede encontrar usando el comando whoami . Escribe en tu terminal:
$whoamiLuego vaya a pg_hba.conf
$sudo nano /etc/postgresql/14/main/pg_hba.confAgregue su usuario de postgre, con method=peer, como se muestra a continuación:
# TYPE DATABASE USER ADDRESS METHOD local all postgres peerEsto funcionó para mí.
Este error se produce cuando no se tiene acceso autorizado para conectarse al servidor de PostgreSQL en el socket especificado. Una posible solución es cambiar la configuración del archivo pg_hba.conf para permitir la autenticación de pares para el usuario "postgres". También se sugiere revisar la configuración del archivo postgresql.conf, se recomienda cambiar el puerto a 5432 y reiniciar la máquina.
Otra solución es conectarse localmente usando permisos locales, se sugiere ejecutar el siguiente comando:
psql -h /var/run/postgresqlesto permitiría conectarse localmente.