Fix: psql: kunne ikke koble til server: Ingen slik fil eller katalog



Prøv Instrumentet Vårt For Å Eliminere Problemer

PostgreSQL markedsfører seg selv som den mest avanserte applikasjonsplattformen med åpen kildekode-database, og Debian Linux har absolutt mange pakker som gjør det enda mer komplekst. Du kan også finne båtlast med pakker for PostgreSQL hvis du jobber med Ubuntu Server eller noen av de forskjellige Ubuntu-spinnene, siden de er basert på Debians kjerne. Dette nivået av kompleksitet og utvikling gjør 'kunne ikke koble til server' og 'ingen slik fil eller katalog' advarsler som mye mer irriterende.



Heldigvis er dette vanligvis enkle tilfeller av tillatelsesproblemer forårsaket av det faktum at PostgreSQL ønsker at en bruker som heter postgres, skal holde på disse katalogene. Ved å bruke et enkelt kommandolinjetriks, kan du fikse dette nesten umiddelbart. Du må gjennomgå noen få grunnleggende diagnosekontroller på forhånd, men bare for å være sikker på at dette faktisk er problemet du er imot.



Å fikse PostgreSQL kunne ikke koble til serverfeil

Forsøk først å starte PostgreSQL-systemet på nytt manuelt. Noen ganger er dette nok til å fikse ting, og hvis ikke, får du i det minste en feilmelding å jobbe fra. Mer enn sannsynlig starter du ganske enkelt systemet på nytt ved å utstede psql-kommandoen som postgres-bruker.



Du vil kanskje oppdage at dette ryddet opp. Ellers kan det hende du får en linje som leser 'psql: kunne ikke koble til serveren: Ingen slik fil eller katalog', noe som betyr at du har problemer med tillatelse. Hvis du mottar denne feilmeldingen, får du også litt annen tekst spyttet.

Sjekk servicestatus hvis du har fått denne meldingen for å være sikker på at modulene er lastet. Det burde de være, men hvis ikke, vil du kanskje starte på nytt. Hvis du får en melding som heter 'Loaded: loaded (/lib/systemd/system/postgresql.service; enabled)', kjører de. Prøve sudo service postgresql start på nytt bare for å gjøre en kort omstart og se om det korrigerer noe. Det gjør det vanligvis ikke, men det kan være verdt å prøve, avhengig av.




Forutsatt at det ikke har hjulpet, ta en titt inne i PostgreSQL-loggen for å se etter feil. I det usannsynlige tilfellet du finner noe om pakkefeil, kan det hende du mangler en av SQL-modulene. Dette er vanligvis ikke årsaken til disse problemene, men det kan absolutt ikke skade å i det minste ta en titt. Mer enn sannsynlig vil du faktisk komme over noe som advarer deg om at 'Tillatelser skal være u = rwx (0700)' og

at 'datakatalogen' /var/lib/postgresql/9.6/main 'har tilgang til gruppe eller verden', selv om du kanskje ser et annet versjonsnummer, avhengig av hvilken SQL-server du kjører.

Dette er fordi Debian og lignende distribusjoner forventer at postgres-bruker og gruppe styrer disse katalogene med 0700 tillatelser og alle filer gjennom 0600 tillatelser for sikkerhets skyld. Alt du trenger å gjøre er å kjøre følgende kommando på terminalen for å fikse tillatelser:

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

Husk at det bør være store bokstaver X og ikke de vanligste små bokstavene x du sannsynligvis er mer kjent med på grunn av den spesifikke måten du vil sette disse filtillatelsesalternativene på. Selv om du trenger root-tilgang for å gjøre dette, bør inkluderingen av disse to sudo-merkene være mer enn nok til å gi deg selv de riktige tillatelsene når du kjører som en vanlig bruker. Dette er viktig siden Ubuntu og de forskjellige Linux-implementeringene ble skilt ut fra Ubuntu, har ut hovedrotkontoen, så du må gjøre ting på denne måten.

Når denne kommandoen er ferdig, kan du starte tjenesten på nytt med sudo service postgresql start på nytt fra terminalen, og du bør ikke ha noen feil denne gangen. Hvis du skulle ta en titt på loggen, burde ikke advarslene om tillatelsesproblemer være der lenger heller.

Dette er en feil som oppstår som et resultat av ganske spesifikke forhold, så du bør ikke oppleve det igjen etter at du har korrigert det første gang, forutsatt at du ikke prøver å gjøre noe manuelt som involverer tillatelsesmanipulering av PostgreSQL-katalogene. Det er ingen situasjon der dette egentlig burde være nødvendig uansett, utenom å rette opp dette problemet i utgangspunktet.

3 minutter lest