Korjaus: psql: ei voinut muodostaa yhteyttä palvelimeen: Ei tällaista tiedostoa tai hakemistoa
PostgreSQL mainostaa itseään pisimmällä avoimen lähdekoodin tietokantasovellusalustana, ja Debian Linuxilla on varmasti paljon paketteja, jotka tekevät siitä vielä monimutkaisemman. Löydät myös veneitä paketteja PostgreSQL: lle, jos työskentelet Ubuntu Serverin tai jonkin muun Ubuntu-pyöräytyksen kanssa, koska ne perustuvat Debianin ytimeen. Tämän monimutkaisuuden ja kehityksen taso tekee "ei voinut muodostaa yhteyttä palvelimeen" ja "ei sellaista tiedostoa tai hakemistoa" -varoituksia, jotka ovat paljon ärsyttäviä.
Onneksi nämä ovat yleensä yksinkertaisia tapauksia lupaongelmista, jotka johtuvat siitä, että PostgreSQL haluaa, että postgres-niminen käyttäjä pitää kiinni näistä hakemistoista. Käyttämällä yksinkertaista komentorivin temppua voit korjata ongelman melkein välittömästi. Haluat kuitenkin käydä läpi muutaman diagnostiikan perustarkastuksen vain varmistaaksesi, että tämä on oikea ongelma.
PostgreSQL: n korjaaminen ei voinut muodostaa yhteyttä palvelinvirheisiin
Yritä ensin käynnistää PostgreSQL-järjestelmä uudelleen manuaalisesti. Joskus tämä riittää korjaamaan asiat, ja jos ei, saat ainakin virheilmoituksen. Enemmän kuin todennäköistä, käynnistät järjestelmän uudelleen yksinkertaisesti antamalla psql-komennon postgres-käyttäjänä.
Saatat huomata, että tämä selvitti kaiken. Muussa tapauksessa saatat saada rivin, joka lukee "psql: ei voinut muodostaa yhteyttä palvelimeen: Ei tällaista tiedostoa tai hakemistoa", mikä tarkoittaa, että sinulla on käyttöoikeusongelmia. Jos saat tämän virheilmoituksen, saat myös jonkin muun tekstin.
Tarkista palvelun tila, jos olet saanut tämän viestin ja varmista, että moduulit on ladattu. Niiden pitäisi olla, mutta jos et ole, sinun kannattaa aloittaa uudelleen. Jos saat viestin, jossa lukee ”Ladattu: ladattu (/lib/systemd/system/postgresql.service; käytössä)”, niin ne ovat käynnissä. Yrittää sudo service postgresql käynnistetään uudelleen vain tehdä lyhyt uudelleenkäynnistys ja nähdä, korjaako se mitään. Se ei yleensä ole, mutta se voi olla kokeilun arvoinen riippuen.
Olettaen, että se ei ole auttanut, katso virheitä PostgreSQL-lokista. Epätodennäköisessä tapauksessa löydät jotain pakettivirheistä, saatat puuttua yksi SQL-moduuleista. Tämä ei yleensä aiheuta näitä ongelmia, mutta se ei todellakaan voi satuttaa ainakin katsomaan. Todennäköisesti kohtaat jotain, joka varoittaa, että "Lupien tulisi olla u = rwx (0700)" ja
että "tietohakemistolla" /var/lib/postgresql/9.6/main "on ryhmä- tai maailmanlaajuinen käyttöoikeus", vaikka saatat nähdä eri versionumeron käytetyn SQL-palvelimen mukaan.
Tämä johtuu siitä, että Debian ja vastaavat jakelut odottavat, että postgres-käyttäjä ja -ryhmä hallitsevat näitä hakemistoja 0700-käyttöoikeuksilla ja kaikkia tiedostoja 0600-käyttöoikeuksilla turvallisuuden vuoksi. Sinun tarvitsee vain suorittaa seuraava komento terminaalissa korjataaksesi käyttöoikeudet:
sudo chown -R postgres: postgres /var/lib/postgresql/9.6/ && sudo chmod -R u = rwX, go = /var/lib/postgresql/9.6/
Pidä mielessä, että sen pitäisi olla isoja kirjaimia X eikä yleisempiä pieniä kirjaimia x, jotka todennäköisesti tunnet paremmin, koska haluat nimenomaisesti asettaa nämä tiedoston käyttöoikeusasetukset. Vaikka tarvitset root-käyttöoikeuden tähän, näiden kahden sudomerkin sisällyttämisen pitäisi olla enemmän kuin tarpeeksi, jotta voit antaa itsellesi oikeat käyttöoikeudet käyttäessäsi tavallista käyttäjää. Tämä on tärkeää, koska Ubuntu ja erilaiset Linux-toteutukset irrotettiin Ubuntun hashista pääkäyttäjätililtä, joten sinun on tehtävä asiat tällä tavalla.
Kun tämä komento on valmis, voit käynnistää palvelun uudelleen sudo service postgresql käynnistetään uudelleen terminaalista, eikä tällä kertaa pitäisi olla virheitä. Jos katsot lokia, myöskään käyttöoikeusongelmia koskevia varoituksia ei pitäisi olla enää siellä.
Tämä on virhe, joka tapahtuu melko erityisten olosuhteiden seurauksena, joten sinun ei pitäisi kokea sitä uudelleen, kun olet korjannut sen ensimmäisen kerran, edellyttäen, että et yritä tehdä mitään manuaalisesti, johon liittyy PostgreSQL-hakemistojen käyttöoikeuksien manipulointi. Ei ole tilannetta, jossa tämän pitäisi todellakin olla tarpeellista muuten kuin tämän ongelman korjaamisen jälkeen.