Saltar al contenido

PostgreSQL: ¿Por qué psql no puede conectarse al servidor?

Este grupo de redactores ha estado por horas investigando para dar espuestas a tu duda, te brindamos la soluciones por eso esperamos servirte de gran apoyo.

Solución:

El error indica que la utilidad psql no puede encontrar el socket para conectarse a su servidor de base de datos. O no tiene el servicio de base de datos ejecutándose en segundo plano, o el socket está ubicado en otro lugar, o quizás el pg_hba.conf necesita ser reparado.

Paso 1: Verifique que la base de datos se esté ejecutando

El comando puede variar dependiendo de su sistema operativo. Pero en la mayoría de los sistemas *ix, lo siguiente funcionaría, buscará postgres entre todos los procesos en ejecución

ps -ef | grep postgres

En mi sistema, mac osx, esto escupe

501   408     1   0  2Jul15 ??         0:21.63 /usr/local/opt/postgresql/bin/postgres -D /usr/local/var/postgres -r /usr/local/var/postgres/server.log

La última columna muestra el comando utilizado para iniciar el servidor y las opciones.

Puede ver todas las opciones disponibles para iniciar el servidor de postgres usando lo siguiente.

man postgres

A partir de ahí, verá que las opciones -D y -r son respectivamente los datadir & la logfilename.

Paso 2: si el servicio de postgres se está ejecutando

Usar find para buscar la ubicación del zócalo, que debe estar en algún lugar del /tmp

sudo find /tmp/ -name .s.PGSQL.5432

Si postgres se está ejecutando y acepta conexiones de socket, lo anterior debería indicarle la ubicación del socket. En mi máquina, resultó ser:

/tmp/.s.PGSQL.5432

Luego, intente conectarse a través de psql usando la ubicación de este archivo explícitamente, por ejemplo.

psql -h /tmp/ dbname

Paso 3: si el servicio se está ejecutando pero no ve un socket

Si no puede encontrar el socket, pero ve que el servicio se está ejecutando, verifique que el archivo pg_hba.conf permita sockets locales.

Navegar a la datadir y usted debe encontrar el pg_hba.conf expediente.

De forma predeterminada, cerca de la parte inferior del archivo debería ver las siguientes líneas:

# "local" is for Unix domain socket connections only
local       all       all       trust

Si no lo ve, puede modificar el archivo y reiniciar el servicio de postgres.

Si no hay ningún error al iniciar el servicio de Postgres, siga estos pasos

Paso 1: Correr pg_lsclusters enumerará todos los clústeres de Postgres que se ejecutan en su dispositivo

p.ej:

Ver Cluster Port Status Owner    Data directory               Log file
9.6 main    5432 online postgres /var/lib/postgresql/9.6/main /var/log/postgresql/postgresql-9.6-main.log

lo más probable es que el estado sea inactivo en su caso. Si no, reinicie el servicio PostgreSQL

Paso 2: reiniciar pg_ctlcluster

#format is pg_ctlcluster   
sudo pg_ctlcluster 9.6 main start

#restart PostgreSQL service
sudo service postgresql restart

Paso 3: el paso 2 falló y arrojó un error

Si no se pudo reiniciar pg_lsclusters, arrojará un error. Mi error fue (Puedes ver los errores en los registros /var/log/postgresql/postgresql-9.6-main.log)

FATAL: could not access private key file "/etc/ssl/private/ssl-cert-snakeoil.key": Permission denied
Try adding `postgres` user to the group `ssl-cert`

Paso 4: verificar la propiedad de postgres

Asegúrate de eso postgres es el dueño de /var/lib/postgresql/version_no/main
p.ej: sudo chown postgres -R /var/lib/postgresql/9.6/main/

Paso 5: verifique que el usuario de postgres pertenezca al grupo de usuarios ssl-cert

Me pasó y resultó que eliminé por error al usuario de Postgres del grupo “ssl-cert”. Ejecute el siguiente código para solucionar el problema del grupo de usuarios y para corregir los permisos

#set user to group back with
sudo gpasswd -a postgres ssl-cert

# Fixed ownership and mode
sudo chown root:ssl-cert  /etc/ssl/private/ssl-cert-snakeoil.key
sudo chmod 740 /etc/ssl/private/ssl-cert-snakeoil.key

# now postgresql starts! (and install command doesn't fail anymore)
sudo service postgresql restart

Me he encontrado con un problema similar un par de veces. Normalmente solo hago una nueva instalación de PostgreSQL siguiendo este tutorial y eso resuelve el problema a expensas de perder datos.

Estaba decidido a obtener una solución real hoy. Reiniciar PostgreSQL lo resolvió en ubuntu. sudo /etc/init.d/postgresql restart

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *