Oprava: psql: nepodarilo sa pripojiť k serveru: Žiadny takýto súbor alebo adresár
PostgreSQL sa propaguje ako najvyspelejšia platforma databázových aplikácií s otvoreným zdrojovým kódom a Debian Linux má určite veľa balíkov, ktoré ju robia ešte zložitejšou. Balíky balíkov pre PostgreSQL nájdete aj v prípade, že pracujete so serverom Ubuntu alebo s ktorýmkoľvek z rôznych roztočení Ubuntu, pretože sú založené na jadre Debianu. Táto úroveň zložitosti a vývoja spôsobuje, že „nemohol sa pripojiť k serveru“ a „žiadny takýto súbor alebo adresár“ nie sú práve tak nepríjemné.
Našťastie sú to obvykle jednoduché prípady problémov s povolením, ktoré sú spôsobené skutočnosťou, že PostgreSQL chce, aby sa týchto adresárov držal používateľ menom postgres. Pomocou jednoduchého triku príkazového riadku to môžete vyriešiť takmer okamžite. Predtým však budete musieť podstúpiť niekoľko základných diagnostických kontrol, aby ste sa uistili, že to je skutočne ten problém, s ktorým sa stretávate.
Oprava PostgreSQL sa nemohla pripojiť k chybám servera
Najskôr skúste reštartovať systém PostgreSQL ručne. Niekedy to stačí na opravu, a ak nie, zobrazí sa vám aspoň chybové hlásenie, z ktorého budete môcť pracovať. Je viac než pravdepodobné, že jednoducho reštartujete systém vydaním príkazu psql ako používateľ postgres.
Možno zistíte, že sa tým všetko vyjasnilo. V opačnom prípade môžete získať riadok s textom „psql: nemohol som sa pripojiť k serveru: Žiadny takýto súbor alebo adresár“, čo znamená, že máte problémy s povolením. Ak sa zobrazí toto chybové hlásenie, dostanete vypľutý aj ďalší text.
Ak sa vám zobrazuje táto správa, skontrolujte stav služby a uistite sa, že sú načítané moduly. Mali by byť, ale ak nie sú, budete pravdepodobne chcieť reštartovať. Ak dostanete správu s textom „Načítané: načítané (/lib/systemd/system/postgresql.service; povolené)“, potom sú spustené. Vyskúšajte sudo služba postgresql reštart len urobiť krátky reštart a zistiť, či sa tým niečo napraví. Spravidla to tak nie je, ale mohlo by to stáť za vyskúšanie.
Ak predpokladáme, že to nepomohlo, pozrite sa do protokolu PostgreSQL a vyhľadajte chyby. V nepravdepodobnom prípade nájdete niečo o chybách balíka, potom vám môže chýbať jeden z modulov SQL. Nie je to zvyčajne príčina týchto problémov, ale určite vám nemôže ublížiť, keď sa na ne aspoň pozriete. Je viac než pravdepodobné, že narazíte na niečo, čo vás varuje, že „Povolenia by mali byť u = rwx (0700)“ a
že „dátový adresár„ /var/lib/postgresql/9.6/main “má prístup do skupiny alebo do sveta“, aj keď v závislosti od toho, aký server SQL používate, môžete vidieť iné číslo verzie.
Je to preto, že Debian a podobné distribúcie očakávajú, že používateľ a skupina postgres ovládajú tieto adresáre z bezpečnostných dôvodov s oprávneniami 0700 a všetky súbory prostredníctvom oprávnení 0600. Všetko, čo musíte urobiť, je spustiť nasledujúci príkaz v termináli, aby ste opravili povolenia:
sudo chown -R postgres: postgres /var/lib/postgresql/9.6/ && sudo chmod -R u = rwX, go = /var/lib/postgresql/9.6/
Nezabudnite, že by malo ísť o veľké písmená X a nie o obyčajnejšie malé písmená x, ktoré ste pravdepodobne lepšie oboznámení s konkrétnym spôsobom, akým budete chcieť nastaviť tieto možnosti povolení súborov. Aj keď na to potrebujete prístup root, zahrnutie týchto dvoch značiek sudo by malo byť viac ako dostatočné na to, aby ste si dali správne oprávnenia, keď ste bežným používateľom. To je dôležité, pretože Ubuntu a rôzne implementácie systému Linux sa točili z toho, že Ubuntu hashuje hlavný účet root, takže musíte robiť veci týmto spôsobom.
Po dokončení tohto príkazu môžete službu znova spustiť do sudo služba postgresql reštart z terminálu a tentoraz by ste nemali mať žiadne chyby. Ak by ste sa mali pozrieť na denník, nemali by tu už byť ani tieto varovania týkajúce sa problémov s povoleniami.
Toto je chyba, ktorá sa stane v dôsledku dosť špecifických podmienok, takže by ste sa nemali po opätovnej oprave už viac stretávať, ak sa nepokúšate manuálne robiť čokoľvek, čo zahŕňa manipuláciu s oprávneniami v adresároch PostgreSQL. Neexistuje situácia, keď by to aj tak skutočne malo byť potrebné, okrem riešenia tohto problému.