Fix: psql: kunde inte ansluta till servern: Ingen sådan fil eller katalog



Prova Vårt Instrument För Att Eliminera Problem

PostgreSQL marknadsför sig som den mest avancerade applikationsplattformen med öppen källkodsdatabas, och Debian Linux har verkligen massor av paket som gör det ännu mer komplext. Du kan också hitta båtladdningar av paket för PostgreSQL om du arbetar med Ubuntu Server eller någon av de olika Ubuntu-snurrarna, eftersom de är baserade på Debians kärna. Denna nivå av komplexitet och utveckling gör 'kunde inte ansluta till servern' och 'ingen sådan fil eller katalog' varningar som mycket mer irriterande.



Lyckligtvis är det vanligtvis enkla fall av tillståndsproblem orsakade av det faktum att PostgreSQL vill att en användare som heter postgres ska hålla fast i dessa kataloger. Genom att använda ett enkelt kommandorads trick kan du fixa det nästan direkt. Du vill dock gå igenom några grundläggande diagnostiska kontroller i förväg, bara för att se till att det här faktiskt är problemet du står emot.



Åtgärda PostgreSQL kunde inte ansluta till serverfel

Försök först starta om PostgreSQL-systemet manuellt. Ibland räcker det för att fixa saker, och om inte så får du åtminstone ett felmeddelande att arbeta från. Mer än troligt startar du helt enkelt om systemet genom att utfärda psql-kommandot som postgres-användare.



Du kanske upptäcker att detta rensade allt. Annars kan du få en rad som läser 'psql: kunde inte ansluta till servern: ingen sådan fil eller katalog', vilket innebär att du har behörighetsproblem. Om du får det här felmeddelandet får du också lite annan text.

Kontrollera servicestatus om du har fått det här meddelandet för att se till att modulerna är laddade. Det borde de vara, men om de inte är det kanske du vill starta om. Om du får ett meddelande som läser ”Loaded: loaded (/lib/systemd/system/postgresql.service; enabled)”, körs de. Prova sudo service postgresql startar om bara för att göra en kort omstart och se om det korrigerar något. Det gör det vanligtvis inte, men det kan vara värt ett försök beroende.




Förutsatt att det inte har hjälpt, ta en titt inuti PostgreSQL-loggen för att leta efter fel. I det osannolika fallet att du hittar något om paketfel, kanske du saknar en av SQL-modulerna. Detta är vanligtvis inte orsaken till dessa problem, men det kan verkligen inte skada att åtminstone titta. Mer än troligt kommer du faktiskt att stöta på något som varnar dig för att 'Behörigheterna ska vara u = rwx (0700)' och

att 'datakatalogen' /var/lib/postgresql/9.6/main 'har grupp- eller världsåtkomst', men du kan se ett annat versionsnummer beroende på vilken SQL-server du kör.

Detta beror på att Debian och liknande distributioner förväntar sig att postgres-användare och grupp styr dessa kataloger med 0700-behörigheter och alla filer till 0600-behörigheter för säkerhets skull. Allt du behöver göra är att köra följande kommando på terminalen för att fixa behörigheter:

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

Tänk på att det borde vara versaler X och inte den vanligaste gemener x du förmodligen är mer bekant med på grund av det specifika sättet att du vill ställa in dessa filbehörighetsalternativ. Även om du behöver root-åtkomst för att göra detta, bör inkluderingen av dessa två sudo-märken vara mer än tillräckligt för att ge dig rätt behörighet när du kör som en vanlig användare. Detta är viktigt eftersom Ubuntu och de olika Linux-implementeringarna har skurits ut från Ubuntu har tagit ut huvudrotkontot så att du måste göra saker på det här sättet.

När det här kommandot är klart kan du starta om tjänsten igen genom att sudo service postgresql startar om från terminalen och du bör inte ha några fel den här gången. Om du skulle titta på loggen, borde inte varningarna om behörighetsproblem vara längre heller.

Detta är ett fel som uppstår till följd av ganska specifika förhållanden, så du bör inte uppleva det igen efter att du har korrigerat det första gången förutsatt att du inte försöker göra något manuellt med behörighetshantering av PostgreSQL-katalogerna. Det finns ingen situation där detta egentligen borde vara nödvändigt ändå, förutom att rätta till problemet i första hand.

3 minuter läst