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



Prøv Vores Instrument Til At Fjerne Problemer

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 nogen 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 simple 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 kontroller på forhånd, men 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 ryddede alt op. Ellers får du muligvis en linje, der læser 'psql: kunne ikke oprette forbindelse til serveren: Ingen sådan fil eller bibliotek', hvilket betyder, at du har problemer med tilladelse. Hvis du modtager denne fejlmeddelelse, får du også en anden tekst spyttet.

Kontroller servicestatus, hvis du har fået denne besked for at sikre dig, at modulerne er indlæst. Det burde de være, men hvis de ikke er det, vil du muligvis genstarte. Hvis du får en besked, der lyder 'Loaded: loaded (/lib/systemd/system/postgresql.service; enabled)', kører de. Prøve sudo service postgresql genstart bare for at foretage 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 se. Mere end sandsynligt støder du faktisk 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 for sikkerheds skyld. Alt du skal gøre er at køre følgende kommando ved 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, skal 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å loggen, skulle disse advarsler om tilladelsesproblemer heller ikke være der længere.

Dette er en fejl, der opstår som et resultat af forholdsvis 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.

3 minutter læst