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

PostgreSQL se promociona a sí mismo como la plataforma de aplicaciones de base de datos de código abierto más avanzada, y Debian Linux ciertamente tiene muchos paquetes que lo hacen aún más complejo. También puede encontrar grandes cantidades 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 hace que las advertencias de "no se pudo conectar al servidor" y "no hay tal archivo o directorio" sean mucho más molestas.

Afortunadamente, estos suelen ser casos simples de problemas de permisos causados ​​por el hecho de que PostgreSQL quiere que un usuario llamado postgres mantenga estos directorios. Con un simple truco de línea de comandos, puede solucionar este problema casi al instante. Sin embargo, querrá pasar por algunas verificaciones de diagnóstico básicas de antemano, solo para asegurarse de que este sea realmente el problema al que se enfrenta.

La reparación de PostgreSQL no pudo conectarse a los 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.

Puede encontrar que esto aclara 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 recibirá otro mensaje de texto.

Verifique el estado del servicio si recibió este mensaje para asegurarse de que los módulos estén cargados. Deberían estarlo, pero si no es así, es posible que desee reiniciar. Si recibe un mensaje que dice “Cargado: cargado (/lib/systemd/system/postgresql.service; habilitado)”, entonces se están ejecutando. Pruebe sudo service postgresql restart solo para hacer un breve reinicio y ver si eso corrige algo. Por lo general, no es así, pero podría valer la pena intentarlo dependiendo.

Suponiendo que no ha ayudado, eche un vistazo al interior del registro de PostgreSQL para buscar errores. En el caso poco probable de que encuentre algo sobre errores de paquete, es posible que le falte uno de los módulos SQL. Por lo general, esta no es la causa de estos problemas, pero ciertamente no puede hacer daño al menos echar un vistazo. Lo más probable es que te encuentres con algo que te advierte que "los permisos deben ser u = rwx (0700)" y

ese "directorio de datos" /var/lib/postgresql/9.6/main "tiene acceso de grupo o mundial", 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 motivos de seguridad. Todo lo que tiene que hacer es ejecutar el siguiente comando en la terminal para corregir 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 debe ser una X mayúscula y no la x minúscula más común con la que probablemente esté más familiarizado debido a la forma específica en que querrá configurar estas opciones de permiso de archivo. Si bien necesita acceso de root para hacer esto, la inclusión de esas dos marcas sudo debería ser más que suficiente para otorgarse los permisos adecuados cuando se ejecuta como usuario normal. Esto es importante ya que Ubuntu y las diversas implementaciones de Linux se derivaron de Ubuntu y eliminaron la cuenta raíz principal, por lo que debe hacer las cosas de esta manera.

Una vez que finalice este comando, puede reiniciar el servicio nuevamente mediante sudo service postgresql reiniciar desde la terminal y no debería tener ningún error esta vez. Si tuviera que echar un vistazo al registro, esas advertencias sobre problemas de permisos tampoco deberían estar allí.

Este es un error que ocurre como resultado de condiciones bastante específicas, por lo que no debería volver a experimentarlo después de haberlo corregido la primera vez, siempre que no intente hacer manualmente nada que implique la manipulación de permisos de los directorios de PostgreSQL. No hay ninguna situación en la que esto sea realmente necesario de todos modos, aparte de corregir este problema en primer lugar.