Fix: psql: kunne ikke oprette forbindelse til serveren: Ingen sådan fil eller mappe

PostgreSQL promoverer sig selv som den mest avancerede open source database applikationsplatform, og Debian Linux har bestemt masser af pakker, der gør det endnu mere komplekst. Du kan også finde boatloads af pakker til PostgreSQL, hvis du arbejder med Ubuntu Server eller en af ​​de forskellige Ubuntu-spins, da de er baseret på Debians kerne. Dette niveau af kompleksitet og udvikling gør "kunne ikke oprette forbindelse til serveren" og "ingen sådan fil eller mappe" advarsler meget mere irriterende.

Heldigvis er dette normalt enkle tilfælde af tilladelsesproblemer, der skyldes, at PostgreSQL ønsker, at en bruger, der hedder postgres, skal holde fast i disse mapper. Ved at bruge et simpelt kommandolinjetrick kan du løse dette næsten øjeblikkeligt. Du vil dog gerne gennemgå et par grundlæggende diagnostiske kontrol på forhånd, bare for at sikre dig, at dette faktisk er det problem, du er imod.

Rettelse af PostgreSQL kunne ikke oprette forbindelse til serverfejl

Prøv først at genstarte PostgreSQL-systemet manuelt. Nogle gange er dette nok til at rette ting, og hvis ikke, får du i det mindste en fejlmeddelelse at arbejde fra. Mere end sandsynligt genstarter du simpelthen systemet ved at udstede psql-kommandoen som postgres-bruger.

Du kan finde ud af, at dette ryddet alt op. Ellers får du muligvis en linje, der læser "psql: kunne ikke oprette forbindelse til serveren: Ingen sådan fil eller mappe", hvilket betyder, at du har problemer med tilladelse. Hvis du modtager denne fejlmeddelelse, får du også en anden tekst spyttet.

Tjek servicestatus, hvis du har fået denne meddelelse for at sikre dig, at modulerne er indlæst. Det burde de være, men hvis de ikke er det, vil du måske genstarte. Hvis du får en meddelelse, der lyder "Loaded: loaded (/lib/systemd/system/postgresql.service; enabled)", kører de. Prøve sudo service postgresql genstart bare for at lave en kort genstart og se om det korrigerer noget. Det gør det normalt ikke, men det kan være værd at prøve, afhængigt af.

Forudsat at det ikke har hjulpet, skal du kigge ind i PostgreSQL-logfilen for at se efter fejl. I det usandsynlige tilfælde finder du noget om pakkefejl, så mangler du muligvis et af SQL-modulerne. Dette er normalt ikke årsagen til disse problemer, men det kan bestemt ikke skade at i det mindste tage et kig. Mere end sandsynligt vil du faktisk støde på noget, der advarer dig om, at "Tilladelser skal være u = rwx (0700)" og

at "datakataloget" /var/lib/postgresql/9.6/main "har gruppe- eller verdensadgang", selvom du muligvis ser et andet versionsnummer, afhængigt af hvilken SQL-server du kører.

Dette skyldes, at Debian og lignende distributioner forventer, at postgres-brugeren og gruppen styrer disse mapper med 0700 tilladelser og alle filer gennem 0600 tilladelser af sikkerheds skyld. Alt hvad du skal gøre er at køre følgende kommando på terminalen for at rette tilladelser:

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

Husk, at der skal være store bogstaver X og ikke de mere almindelige små bogstaver x, som du sandsynligvis er mere fortrolig med på grund af den specifikke måde, du vil indstille disse filtilladelsesindstillinger på. Mens du har brug for rootadgang for at gøre dette, bør inkluderingen af ​​disse to sudo-mærker være mere end nok til at give dig selv de rette tilladelser, når du kører som en almindelig bruger. Dette er vigtigt, da Ubuntu og de forskellige Linux-implementeringer, der er udskilt fra Ubuntu, hash den vigtigste rodkonto, så du skal gøre tingene på denne måde.

Når denne kommando er afsluttet, kan du genstarte tjenesten igen ved at sudo service postgresql genstart fra terminalen, og du skal ikke have nogen fejl denne gang. Hvis du skulle se på logfilen, skulle disse advarsler om tilladelsesproblemer heller ikke være der længere.

Dette er en fejl, der opstår som et resultat af temmelig specifikke forhold, så du bør ikke opleve det igen, efter at du har rettet det første gang, forudsat at du ikke prøver manuelt at gøre noget, der involverer tilladelsesmanipulation af PostgreSQL-mapper. Der er ingen situation, hvor dette virkelig skulle være nødvendigt alligevel uden for at rette op på dette problem i første omgang.