Si su servicio de Postgres está funcionando sin ningún error o no hay ningún error al iniciar el servicio de Postgres y sigue recibiendo el error mencionado, siga estos pasos
Paso 1:Ejecutar pg_lsclusters enumerará todos los clústeres de postgres que se ejecutan en su dispositivo
por ejemplo:
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. Intente reiniciar los clústeres y el servicio de Postgres
Paso 2:reiniciar pg_ctlcluster
#format is pg_ctlcluster <version> <cluster> <action>
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 este proceso no tiene éxito, arrojará el error. Mi error fue (Puede ver el registro de errores en /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:comprobar la propiedad de postgres
Asegúrate de que postgres es el propietario de /var/lib/postgresql/version_no/main por ejemplo: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 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
sudo service postgresql restart
Probablemente tenga varias versiones de PostgreSQL instaladas. Si es así, la otra versión probablemente tenga como valor predeterminado unix_socket_directories = '/tmp/' pero el libpq tu psql está vinculado probablemente por defecto a /var/run/postgresql/ .
Prueba
psql -h /tmp
Si eso funciona, lo anterior es el problema. Puedes agregar export PGHOST=/tmp a tu .bashrc para cambiar el valor predeterminado localmente para su usuario.
Si eso no funciona, asegúrese de que PostgreSQL se esté ejecutando
ps aux |grep postgres
y si no, ponerlo en marcha. Cómo depende de cómo lo hayas instalado, pero será a través del service o systemctl comando(s) si instaló usando paquetes.
psql:no se pudo conectar al servidor:no existe tal archivo o directorio ¿El servidor se ejecuta localmente y acepta conexiones en un socket de dominio Unix"/var/run/postgresql/.s.PGSQL.5432"?
Este error generalmente significa que el servidor no se está ejecutando. Basado en dpkg -l salida y el hilo de comentarios, se debió al postgresql-9.5 el paquete principal se desinstaló de alguna manera. Dado que la desinstalación no se ha llamado con el --purge opción a dpkg , los archivos de datos y configuración todavía están ahí, así que apt-get install postgresql-9.5 puede solucionar el problema.