Oprava: psql: Nelze se připojit k serveru: Žádný takový soubor nebo adresář

PostgreSQL se prosazuje jako nejpokročilejší platforma databázových aplikací s otevřeným zdrojovým kódem a Debian Linux má určitě spoustu balíčků, díky nimž je ještě složitější. Můžete také najít balíčky balíčků pro PostgreSQL, pokud pracujete se serverem Ubuntu nebo s některým z různých točení Ubuntu, protože jsou založeny na jádru Debianu. Tato úroveň složitosti a vývoje způsobuje, že „nelze se připojit k serveru“ a „žádný takový soubor nebo adresář“ nejsou tak nepříjemná.

Naštěstí se obvykle jedná o jednoduché případy problémů s oprávněním způsobených skutečností, že PostgreSQL chce, aby se uživatel jménem postgres držel těchto adresářů. Pomocí jednoduchého triku příkazového řádku to můžete napravit téměř okamžitě. Nejprve však budete muset projít několika základními diagnostickými kontrolami, abyste se ujistili, že se jedná skutečně o problém, se kterým se potýkáte.

Oprava PostgreSQL se nemohla připojit k chybám serveru

Nejprve zkuste restartovat systém PostgreSQL ručně. Někdy to stačí k vyřešení problému, a pokud ne, dostanete alespoň chybovou zprávu, ze které můžete pracovat. Je více než pravděpodobné, že jednoduše restartujete systém vydáním příkazu psql jako uživatel postgres.

Možná zjistíte, že to všechno vyčistilo. Jinak se může zobrazit řádek s textem „psql: nelze se připojit k serveru: Žádný takový soubor nebo adresář“, což znamená, že máte problémy s oprávněním. Pokud se zobrazí tato chybová zpráva, zobrazí se vám i další text vyplivnutý.

Pokud jste obdrželi tuto zprávu, zkontrolujte stav služby a ujistěte se, že jsou moduly načteny. Měly by být, ale pokud nejsou, můžete restartovat. Pokud se zobrazí zpráva „Načteno: načten (/lib/systemd/system/postgresql.service; povoleno)“, pak běží. Snaž se sudo služba postgresql restart jen udělat krátký restart a zjistit, jestli to něco napraví. Obvykle to tak není, ale může to stát za pokus, záleží.

Za předpokladu, že to nepomohlo, nahlédněte do protokolu PostgreSQL a vyhledejte chyby. V nepravděpodobném případě najdete něco o chybách balíčku, pak vám možná bude chybět jeden z modulů SQL. To obvykle není příčinou těchto problémů, ale rozhodně to nemůže bolet, alespoň se na to podívat. Více než pravděpodobné, že ve skutečnosti narazíte na něco, co vás varuje, že „Oprávnění by měla být u = rwx (0700)“ a

že „datový adresář„ /var/lib/postgresql/9.6/main “má přístup ke skupině nebo světu“, i když v závislosti na tom, jaký server SQL používáte, se může zobrazit jiné číslo verze.

Důvodem je, že Debian a podobné distribuce očekávají, že uživatel a skupina postgres ovládají tyto adresáře z důvodu zabezpečení 0700 a všechny soubory prostřednictvím oprávnění 0600. Jediné, co musíte udělat, je spustit následující příkaz na terminálu a opravit oprávnění:

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

Mějte na paměti, že by mělo jít o velká písmena X, a nikoli o běžnější malá písmena x, s nimiž jste pravděpodobně více obeznámeni kvůli konkrétnímu způsobu, jakým budete chtít nastavit tyto možnosti oprávnění souboru. I když k tomu potřebujete přístup root, zahrnutí těchto dvou značek sudo by mělo být víc než dost na to, abyste si udělali správná oprávnění, když běžíte jako běžný uživatel. To je důležité, protože Ubuntu a různé implementace Linuxu se oddělily od hashování Ubuntu z hlavního účtu root, takže musíte dělat věci tímto způsobem.

Po dokončení tohoto příkazu můžete službu znovu restartovat pomocí sudo služba postgresql restart z terminálu a tentokrát byste neměli mít žádné chyby. Pokud byste se měli podívat na protokol, neměla by tam být ani tato varování týkající se problémů s oprávněními.

Jedná se o chybu, ke které dochází v důsledku poměrně konkrétních podmínek, takže po první opravě byste ji již neměli zaznamenat, pokud se nepokoušíte ručně dělat cokoli, co zahrnuje manipulaci s oprávněními adresářů PostgreSQL. Neexistuje situace, kdy by to mělo být skutečně stejně nutné, mimo to, že se tento problém nejprve opraví.


$config[zx-auto] not found$config[zx-overlay] not found