Solució: psql: no s'ha pogut connectar al servidor: no hi ha cap fitxer ni directori



Proveu El Nostre Instrument Per Eliminar Problemes

PostgreSQL es promociona com la plataforma d’aplicacions de base de dades de codi obert més avançada i, certament, Debian Linux té molts paquets que la fan encara més complexa. També podeu trobar càrregues de paquets per a PostgreSQL si esteu treballant amb Ubuntu Server o amb qualsevol dels diferents girs d’Ubuntu, ja que es basen en el nucli de Debian. Aquest nivell de complexitat i desenvolupament fa que 'no es pugui connectar al servidor' i que 'no hi hagi cap fitxer o directori' advertiments que siguin molt més molestos.



Afortunadament, solen ser casos senzills de problemes de permisos causats pel fet que PostgreSQL vol que un usuari anomenat postgres es mantingui en aquests directoris. Mitjançant un simple truc de línia d’ordres, podeu solucionar-ho gairebé a l’instant. Tanmateix, voldreu fer algunes comprovacions bàsiques de diagnòstic per assegurar-vos que aquest és el problema que teniu.



La solució de PostgreSQL no es podia connectar als errors del servidor

Primer, proveu de reiniciar el sistema PostgreSQL manualment. De vegades, això és suficient per solucionar les coses i, en cas contrari, obtindreu almenys un missatge d'error per treballar. El més probable és que simplement reinicieu el sistema emetent l'ordre psql com a usuari postgres.



És possible que trobeu que això ho aclareix tot. En cas contrari, és possible que obtingueu una línia que digui 'psql: no es pot connectar al servidor: no hi ha cap fitxer ni directori', cosa que significa que teniu problemes de permís. Si rebeu aquest missatge d'error, també rebreu algun altre text.

Comproveu l’estat del servei si heu rebut aquest missatge per assegurar-vos que els mòduls es carreguen. Haurien de ser-ho, però si no ho són, potser voldreu reiniciar-lo. Si rebeu un missatge que diu 'Carregat: carregat (/lib/systemd/system/postgresql.service; activat)', llavors s'estan executant. Proveu-ho servei sudo reinici de postgresql només per fer un breu reinici i veure si això corregeix alguna cosa. Normalment no ho fa, però potser val la pena provar-ho.




Suposant que no ha ajudat, mireu dins del registre de PostgreSQL per cercar errors. En el cas improbable que trobeu alguna cosa sobre els errors del paquet, és possible que us falti un dels mòduls SQL. Aquesta no sol ser la causa d’aquests problemes, però sens dubte no pot fer mal, si més no, fer una ullada. El més probable és que us trobeu amb alguna cosa que us adverteixi que 'Els permisos haurien de ser u = rwx (0700)' i

que el 'directori de dades' /var/lib/postgresql/9.6/main 'té accés grupal o mundial', tot i que és possible que vegeu un número de versió diferent en funció del servidor SQL que esteu executant.

Això es deu al fet que Debian i distribucions similars esperen que l'usuari i el grup postgres controlin aquests directoris amb permisos 0700 i tots els fitxers mitjançant permisos 0600 per motius de seguretat. Tot el que heu de fer és executar l'ordre següent al terminal per corregir els permisos:

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

Tingueu en compte que hauria de ser una majúscula X i no la x minúscula més comuna, probablement estigueu més familiaritzats a causa de la forma específica que voleu establir aquestes opcions de permís de fitxer. Tot i que necessiteu accés root per fer-ho, la inclusió d’aquestes dues marques sudo hauria de ser més que suficient per donar-vos els permisos adequats quan s’executa com a usuari normal. Això és important ja que Ubuntu i les diverses implementacions de Linux derivades d’Ubuntu eliminen el compte root principal, de manera que heu de fer les coses d’aquesta manera.

Un cop finalitzada aquesta ordre, podeu reiniciar el servei de nou servei sudo reinici de postgresql des del terminal i no hauríeu de tenir cap error aquesta vegada. Si fes una ullada al registre, tampoc no haurien d’haver-hi aquestes advertències sobre problemes de permisos.

Es tracta d’un error que es produeix com a resultat d’unes condicions bastant específiques, de manera que no hauríeu de tornar a experimentar-lo després d’haver-lo corregit la primera vegada, sempre que no intenteu fer manualment res que impliqui la manipulació de permisos dels directoris PostgreSQL. No hi ha cap situació en què això sigui realment necessari de totes maneres, fora de corregir aquest problema en primer lloc.

3 minuts de lectura