sql >> Base de Datos >  >> RDS >> PostgreSQL

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

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 el datadir &el logfilename .

Paso 2:si el servicio postgres se está ejecutando

Usa find para buscar la ubicación del socket, que debe estar en algún lugar de /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.

Vaya al datadir y deberías encontrar el pg_hba.conf archivo.

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.