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.