Korjaus: psql: ei voinut muodostaa yhteyttä palvelimeen: Ei tällaista tiedostoa tai hakemistoa

Fix Psql Could Not Connect Server

PostgreSQL mainostaa itseään pisimmällä avoimen lähdekoodin tietokantasovellusalustana, ja Debian Linuxilla on varmasti paljon paketteja, jotka tekevät siitä vieläkin 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 todella ongelma, jota vastustat.



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 jotain. Se ei yleensä ole, mutta se voi olla kokeilun arvoinen riippuen.


Jos oletetaan, ettei se 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 vahingoittaa 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-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/

Muista, että sen pitäisi olla isoja kirjaimia X eikä yleisempiä pieniä kirjaimia x, jotka olet todennäköisesti perehtynyt johtuen erityisestä tavasta, jolla aiot asettaa nämä tiedoston käyttöoikeusasetukset. Vaikka tarvitset pääkäyttäjän oikeudet tähän, näiden kahden sudomerkin sisällyttämisen pitäisi olla enemmän kuin tarpeeksi, jotta voisit 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äätietunnuksesta, 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 ehtojen seurauksena, joten sinun ei pitäisi kokea sitä uudelleen, kun olet korjannut sen ensimmäisen kerran, jos et yritä tehdä mitään manuaalisesti, mikä sisältää PostgreSQL-hakemistojen käyttöoikeuksien manipuloinnin. Ei ole tilannetta, jossa tämän pitäisi todellakin olla tarpeellista muuten kuin tämän ongelman korjaamisen jälkeen.

3 minuuttia luettu