Poprawka: psql: nie można połączyć się z serwerem: nie ma takiego pliku lub katalogu

PostgreSQL promuje się jako najbardziej zaawansowana platforma aplikacji bazodanowych typu open source, a Debian Linux z pewnością ma mnóstwo pakietów, które czynią go jeszcze bardziej złożonym. Możesz także znaleźć mnóstwo pakietów dla PostgreSQL, jeśli pracujesz z Ubuntu Server lub dowolnym z różnych spinów Ubuntu, ponieważ są one oparte na rdzeniu Debiana. Ten poziom złożoności i rozwoju sprawia, że ​​ostrzeżenia „nie można połączyć się z serwerem” i „brak takiego pliku lub katalogu” są o wiele bardziej irytujące.

Na szczęście są to zazwyczaj proste przypadki problemów z uprawnieniami spowodowanych faktem, że PostgreSQL chce, aby użytkownik o nazwie postgres zatrzymał te katalogi. Używając prostej sztuczki wiersza poleceń, możesz to naprawić niemal natychmiast. Będziesz jednak chciał wcześniej przejść przez kilka podstawowych testów diagnostycznych, aby upewnić się, że jest to faktycznie problem, z którym masz do czynienia.

Naprawianie błędów PostgreSQL nie mogło połączyć się z serwerem

Najpierw spróbuj ręcznie ponownie uruchomić system PostgreSQL. Czasami to wystarczy, aby coś naprawić, a jeśli nie, to przynajmniej otrzymasz komunikat o błędzie, z którego możesz pracować. Najprawdopodobniej po prostu zrestartujesz system, wydając komendę psql jako użytkownik postgres.

Może się okazać, że to wszystko wyjaśniło. W przeciwnym razie może pojawić się wiersz, który brzmi „psql: nie można połączyć się z serwerem: brak takiego pliku lub katalogu”, co oznacza, że ​​masz problemy z uprawnieniami. Jeśli otrzymasz ten komunikat o błędzie, otrzymasz również inny tekst.

Sprawdź stan usługi, jeśli otrzymałeś tę wiadomość, aby upewnić się, że moduły są załadowane. Powinny być, ale jeśli nie, możesz chcieć ponownie uruchomić. Jeśli pojawi się komunikat „Załadowano: załadowano (/lib/systemd/system/postgresql.service; włączone)”, oznacza to, że są one uruchomione. Spróbuj ponownie uruchomić usługę sudo postgresql, aby wykonać krótki restart i sprawdzić, czy to coś poprawi. Zwykle nie, ale w zależności od tego warto spróbować.

Zakładając, że to nie pomogło, zajrzyj do dziennika PostgreSQL i poszukaj błędów. W mało prawdopodobnym przypadku znalezienia informacji o błędach pakietu może brakować jednego z modułów SQL. Zwykle nie jest to przyczyną tych problemów, ale z pewnością nie zaszkodzi przynajmniej spojrzeć. Najprawdopodobniej natkniesz się na coś, co ostrzega, że ​​„Uprawnienia powinny być u = rwx (0700)” i

ten „katalog danych“ /var/lib/postgresql/9.6/main ”ma dostęp do grupy lub świata”, chociaż możesz zobaczyć inny numer wersji w zależności od używanego serwera SQL.

Dzieje się tak, ponieważ Debian i podobne dystrybucje oczekują, że użytkownik i grupa postgres będą kontrolować te katalogi z uprawnieniami od 0700 i wszystkimi plikami do 0600 ze względów bezpieczeństwa. Wszystko, co musisz zrobić, to uruchomić następujące polecenie na terminalu, aby naprawić uprawnienia:

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

Pamiętaj, że powinno to być duże X, a nie bardziej powszechne małe litery x, które prawdopodobnie znasz lepiej ze względu na określony sposób, w jaki chcesz ustawić te opcje uprawnień do plików. Chociaż do tego potrzebujesz uprawnień administratora, włączenie tych dwóch znaków sudo powinno wystarczyć, aby nadać sobie odpowiednie uprawnienia podczas pracy jako zwykły użytkownik. Jest to ważne, ponieważ Ubuntu i różne implementacje Linuksa wyodrębnione z Ubuntu haszują główne konto root, więc musisz robić rzeczy w ten sposób.

Po zakończeniu tego polecenia możesz ponownie uruchomić usługę, ponownie uruchamiając usługę sudo postgresql z terminala i tym razem nie powinieneś mieć żadnych błędów. Gdybyś spojrzał na dziennik, to ostrzeżenia dotyczące problemów z uprawnieniami również nie powinny już tam być.

Jest to błąd, który pojawia się w wyniku dość specyficznych warunków, więc nie powinieneś doświadczać go ponownie po poprawieniu go za pierwszym razem, pod warunkiem, że nie próbujesz ręcznie robić niczego, co wiąże się z manipulowaniem uprawnieniami w katalogach PostgreSQL. Nie ma sytuacji, w której to i tak byłoby naprawdę konieczne, poza naprawieniem tego problemu w pierwszej kolejności.