Solución: psql: no se pudo conectar al servidor: no existe tal archivo o directorio

PostgreSQL se promociona a sí mismo como la plataforma de aplicaciones de código abierto más avanzada, y Debian Linux ciertamente tiene muchos paquetes que lo hacen aún más complejo. Puede obtener un montón de paquetes de paquetes para PostgreSQL si está trabajando con Ubuntu Server o cualquiera de los diversos giros de Ubuntu, ya que están basados ​​en el núcleo de Debian. Este nivel de complejidad y desarrollo “no se pudo conectar al servidor” y “no existe tal archivo o directorio” da advertencias mucho más molestas.

Afortunadamente, estos suelen ser casos simples de problemas de permisos porque PostgreSQL requiere que un usuario designado mantenga postgres en estos directorios. Mediante el uso de un simple truco de línea de comandos, puede solucionar este problema casi de inmediato. Sin embargo, querrá pasar por algunas verificaciones de diagnóstico básicas de antemano para asegurarse de que este es realmente el problema al que se enfrenta.

No se puede arreglar la conexión de PostgreSQL con errores del servidor

Primero, intente reiniciar el sistema PostgreSQL manualmente. A veces, esto es suficiente para arreglar las cosas, y si no, al menos obtendrá un mensaje de error para trabajar. Lo más probable es que simplemente reinicie el sistema emitiendo el comando psql como usuario de postgres.

Es posible que descubra que esto lo limpia todo. De lo contrario, es posible que obtenga una línea que diga «psql: no se pudo conectar al servidor: no existe ese archivo o directorio», lo que significa que tiene problemas de permisos. Si recibe este mensaje de error, también obtendrá otro texto.

Verifique el estado del servicio si recibió este mensaje para asegurarse de que los módulos estén cargados. Debería serlo, pero si no es así, es posible que desee reiniciar. Si recibe un mensaje que dice «Cargado: cargado (/lib/systemd/system/postgresql.service; habilitado)», se están ejecutando. Intentalo sudo reiniciar el servicio postgresql simplemente reinicie brevemente y vea si eso corrige algo. Por lo general, no, pero puede valer la pena intentarlo dependiendo de la dependencia.

Suponiendo que no ayudó, busque errores en el registro de PostgreSQL. En caso de que sea poco probable que encuentre algo sobre los errores del paquete, es posible que le falte uno de los módulos SQL. Por lo general, estas no son las causas de estos problemas, pero ciertamente no puede hacer daño al menos mirar. Lo más probable es que te encuentres con algo que te advierte «Los permisos deben ser u = rwx (0700)» y

el directorio de datos «/var/lib/postgresql/9.6/main» tiene acceso grupal o global, aunque es posible que vea un número de versión diferente según el servidor SQL que esté ejecutando.

Esto se debe a que Debian y distribuciones similares esperan que el usuario y el grupo de Postgres controlen estos directorios con permisos 0700 y todos los archivos a través de permisos 0600 por razones de seguridad. Todo lo que tiene que hacer es ejecutar el siguiente comando en la terminal para establecer los permisos:

sudo chown -R postgres: postgres /var/lib/postgresql/9.6/ && sudo chmod -R u = rwX, go = /var/lib/postgresql/9.6/

Tenga en cuenta que esta debe ser la mayúscula X y no la minúscula más común de la que sabe más debido a la forma específica en que querrá configurar estas opciones de permisos de archivos. Si bien necesita acceso de root para hacer esto, debería ser más que suficiente incluir esos dos marcadores para otorgarle los permisos correctos mientras se ejecuta como un usuario regular. Esto es importante ya que Ubuntu y las diversas aplicaciones de Linux del hash de Ubuntu desactivan la cuenta raíz principal, por lo que debe hacer las cosas de esta manera.

Una vez que se complete este comando, puede reiniciar el servicio nuevamente al reiniciar el servicio sudo postgresql desde la terminal y esta vez no debería tener errores. Si observa el registro, estas advertencias sobre problemas de permisos ya no deberían existir.

Este es un error que ocurre como resultado de condiciones moderadamente específicas, por lo que nunca debería volver a experimentarlo después de haberlo corregido por primera vez, siempre que no intente hacer nada relacionado manualmente con la manipulación de permisos en directorios de PostgreSQL. No hay ningún caso en el que eso deba ser necesario de todos modos, aparte de corregir este problema en primer lugar.