Psql nie mógł połączyć się z serwerem: nie ma takiego pliku lub katalogu, błąd 5432?


114

Próbuję uruchomić psqlna moim komputerze Vagrant, ale pojawia się ten błąd:

psql: could not connect to server: No such file or directory

Is the server running locally and accepting connections on 
Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

Uwaga: Vagrant 1.9.2 Box: ubuntu / trusty64, https://atlas.hashicorp.com/ubuntu/boxes/trusty64

EDYTUJ Polecenia, których użyłem, aby zainstalować i uruchomić postgres:

  • sudo apt-get update
  • sudo apt-get install postgresql
  • sudo su postgres
  • psql -d postgres -U postgres

1
To była odpowiedź, która zadziałała dla mnie: askubuntu.com/a/824325/733901
Bruno Louvem Azeredo

Odpowiedzi:


157

Miałem ten sam problem, związany z konfiguracją mojego pliku pg_hba.conf (znajdującego się w /etc/postgresql/9.6/main). Proszę zauważyć, że 9.6 to wersja postgresql, której używam.

Sam błąd jest związany z błędną konfiguracją postgresql, która powoduje awarię serwera przed uruchomieniem.

Sugerowałbym wykonanie tych instrukcji:

  1. Upewnij się, że usługa postgresql jest uruchomiona, używając sudo service postgresql start
  2. Uciekaj pg_lsclustersz terminala
  3. Sprawdź, jaki jest uruchomiony klaster, wynik powinien wyglądać mniej więcej tak:

    Wersja - katalog danych właściciela statusu portu klastra

    9.6 ------- main - 5432 postgres online /var/lib/postgresql/9.6/main

    Zignoruj ​​znaki „---”, ponieważ są one używane tylko do wyrównywania. Ważne informacje to wersja i klaster. Możesz również sprawdzić, czy serwer działa, czy nie w kolumnie stanu.

  4. Skopiuj informacje z wersji i klastra i użyj w ten sposób: pg_ctlcluster <version> <cluster> startwięc w moim przypadku, używając wersji 9.6 i klastra `` main '', byłoby topg_ctlcluster 9.6 main start
  5. Jeśli coś jest nie tak, postgresql wygeneruje dziennik, do którego można uzyskać dostęp /var/log/postgresql/postgresql-<version>-main.log, więc w moim przypadku pełne polecenie byłoby sudo nano /var/log/postgresql/postgresql-9.6-main.log.
  6. Dane wyjściowe powinny pokazać, jaki jest błąd.

    2017-07-13 16:53:04 BRT [32176-1] LOG: nieprawidłowa metoda uwierzytelniania „wszystkie”
    2017-07-13 16:53:04 BRT [32176-2] KONTEKST: wiersz 90 pliku konfiguracyjnego „/ itd. /postgresql/9.5/main/pg_hba.conf "
    2017-07-13 16:53:04 BRT [32176-3] FATAL: nie można załadować pg_hba.conf

  7. Napraw błędy i zrestartuj usługę postgresql sudo service postgresql restarti powinno być dobrze.

Dużo szukałem, aby to znaleźć, zasługa tego posta .

Powodzenia!


1
Doskonały przewodnik. Pełne wyczerpujących wyjaśnień!
Salathiel Genèse

37

Miałem ten sam problem, ale żadna z odpowiedzi nie pomogła.

Jak to naprawiłem (Mac)

  • Spróbuj uruchomić postgresql z pg_ctl -D /usr/local/var/postgres start
  • Poszukaj komunikatu o błędzie o treści podobnej do FATAL: could not open directory "pg_tblspc": No such file or directory.
  • Utwórz ten brakujący katalog mkdir /usr/local/var/postgres/pg_tblspc
  • Powtarzaj od kroku pierwszego, aż utworzysz wszystkie brakujące katalogi
  • Kiedy skończysz, a następnie spróbujesz ponownie uruchomić postgresql, może powiedziećFATAL: lock file "postmaster.pid" already exists
  • Usuń postmaster.pid :rm /usr/local/var/postgres/postmaster.pid
  • Rozpocznij postgres z: pg_ctl -D /usr/local/var/postgres start
  • Gotowe ✨

13

Po prostu wysyłam to dla każdego, kto czuje się zagubiony i beznadziejny, tak jak to zrobiłem, gdy znalazłem to pytanie. Wygląda na to, że czasami edytując niektóre pliki konfiguracyjne związane z psotgresql, można przypadkowo zmienić uprawnienia do pliku:

wprowadź opis obrazu tutaj

Zauważ, że pg_hba.conf należy do roota, a użytkownicy nie mogą go nawet przeczytać. Powoduje to, że postgres nie może otworzyć tego pliku, a tym samym nie może uruchomić serwera, co powoduje wyświetlenie błędu widocznego w pierwotnym pytaniu.

Biegiem

sudo chmod +r pg_hba.conf

Udało mi się ponownie udostępnić ten plik użytkownikowi postgres, a następnie po uruchomieniu

sudo service postgresql start

Udało mi się ponownie uruchomić serwer.


Tak, to był mój problem i nie było to wskazywane w dziennikach (lub jeśli tak było, nie rozumiałem tego).
EAmez

Nie do końca to, co mi się przydarzyło, ale z jakiegoś powodu USŁUGA SIECIOWA utraciła uprawnienia zapisu do całej struktury katalogów. Ta odpowiedź wskazała mi właściwy kierunek, stąd głosy za.
Brad Mathews

5

Czy /etc/postgresql/9.6/main/postgresql.confpokazuje, że port jest przypisywany? Podczas mojej domyślnej instalacji Xubuntu Linux mój pokazał port = 5433 z jakiegoś powodu najlepiej, jak pamiętam, ale skomentowałem wiersz w tym samym pliku, który powiedział listen_addresses = 'localhost'i odkomentowałem wiersz listen_addresses = '*'. Więc może zacznij i sprawdź tam. Mam nadzieję, że to pomoże.


4

Użyj polecenia:

rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8

9
Czy to nie usuwa całej bazy danych? Myślę, że słowo ostrzeżenia byłoby w porządku.
d33tah

1
Dzięki @Tucker Watts i @Gaurav Verma. Rozwiązałem swój problem, próbując obu rozwiązań i dodałem to polecenie pg_ctl -D /usr/local/var/postgres -l logfile start.
Niyongabo

4

To działa dla mnie:

pg_ctl -D /usr/local/var/postgresql@9.6 stop;
brew services stop postgresql@9.6;
brew services start postgresql@9.6;

4

Te dwa kroki rozwiązały to dla mnie na Macu:

rm /usr/local/var/postgres/postmaster.pid
brew services restart postgresql

EDYTOWAĆ:

Jeśli napotkasz ten problem (zgłoszony przez @ luckyguy73): psql: FATAL: database "postgresql" does not exist

Możesz biec

brew postgresql-upgrade-database

naprawić to.


dzięki stary, przeszedłem z
nieudanego

Huh, dziwne, to zawsze działa na mnie. Czy udało ci się to rozwiązać?
nicodp

bez obaw, faktycznie wyszło dobrze. właśnie uruchomiłem 'brew postgresql-upgrade-database' i to
załatwiło sprawę

1
Cieszę się, że to naprawiłeś! Jeśli nie masz nic przeciwko, dodam to również do odpowiedzi, na wypadek, gdyby ktoś inny miał ten sam problem. Dzięki
nicodp

3

W ramach zsh:

rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8

To jedyna rzecz, która zadziałała po niezliczonych godzinach rozwiązywania problemów.


Właśnie
usunąłem

2

Otwórz menedżera bazy danych i wykonaj ten skrypt

update pg_database set datallowconn = 'true' where datname = 'your_database_name';

2

Przydarzyło mi się to samo, gdy zmieniłem coś w /etc/hostspliku. Po zmianie z powrotem na 127.0.0.1 localhostto zadziałało dla mnie.


2

po prostu ponownie zainstaluj pgsql z bezpośrednią wersją sudo apt-get install postgresql-9.5 (musisz usunąć pakiet przed zainstalowaniem nowego)


2

Udało mi się rozwiązać problem, uruchamiając:

sudo systemctl start postgresql@9.5-main

sudo systemctl start postgresql@12-mainpracował dla mnie
parsecer

2

W moim przypadku przyczyną problemu był plik blokujący, postmaster.idktóry nie został poprawnie usunięty podczas ostatniej awarii systemu. Usunięcie go za pomocą sudo rm /usr/local/var/postgres/postmaster.pidi ponowne uruchomienie Postgres rozwiązało problem.


1

Wystąpił ten sam błąd podczas tworzenia bazy danych SQL na maszynie wirtualnej. Zmieniłem domyślną wartość /etc/postgresql/9.3/main/postgresql.conf shared_buffers = 200MBna 75% mojej całkowitej pamięci RAM. Cóż, zapomniałem o przydzieleniu tej pamięci RAM w maszynie wirtualnej. Kiedy wydałem polecenie utworzenia nowej bazy danych, otrzymałem ten sam błąd.

Wyłączył się, dał dziecku butelkę (RAM) i presto, działał.


1

Otrzymałem ten błąd podczas przywracania bazy danych z ostatniego pliku kopii zapasowej pg_basebackup. Potem, kiedy próbowałem połączyć się z bazą danych (psql), otrzymywałem ten sam błąd. Błąd został rozwiązany, kiedy zaktualizowałem plik pg_hba.conf i gdziekolwiek było uwierzytelnianie "peer", zamieniłem je na "md5" i ponownie uruchomiłem usługi postgres. Po tym problem został rozwiązany.



1

Ten błąd przydarzył mi się po odłączeniu komputera Mac mini (tak wymuszone zamknięcie), a wszystko, co musiałem zrobić, aby go naprawić, to ponowne uruchomienie


1

Zalecam wyjaśnienie portu, który postgres. W moim przypadku nie wiedziałem, na którym porcie działają postgresy.

lsof -i | grep 'post'

wtedy możesz wiedzieć, który port nasłuchuje.

psql -U postgres -p "port_in_use"

z opcją portu, może być odpowiedzią. możesz użyć psql.


1

Czasami mam ten sam problem, ale głównie po uaktualnieniach macOS. Zamknięcie i migracja do nowej wersji zwykle rozwiązuje to za mnie (wprowadź zmiany zgodnie z posiadaną wersją). Więc najpierw zaktualizuj swój postgresql

brew services stop postgresql@12
brew services start postgresql@12
brew postgresql-upgrade-database

Jest to głównie tymczasowe rozwiązanie, ale ponieważ nie mogłem znaleźć lepszego rozwiązania, działa to dla mnie.


brew postgresql-upgrade-database jest tym, co w końcu zadziałało dla mnie po wypróbowaniu wszystkiego innego
luckyguy73

1

Jeśli żadna z powyższych odpowiedzi nie działa, wypróbuj tę,

Wiele osób wymieniło wiele rozwiązań tego problemu! Ale wszyscy o tym zapomnieli, ten sam problem pojawi się, gdy na dysku nie ma wystarczającej ilości miejsca lub miejsce, do którego jesteś przydzielony, postgresjest pełne

Sprawdź pamięć systemową, jeśli jest pełna, zwolnij trochę miejsca! następnie zrestartuj postgres o sudo service postgresql restartlub zatrzymaj się i zacznij sudo service posgresql stopwtedysudo service postgresql start

To rozwiąże problem, rozwiązało mnie


0

Mam ten sam problem z Postgres 11 na moim Macu. Ten błąd pojawia się za każdym razem po restarcie

psql: could not connect to server: No such file or directory

Is the server running locally and accepting connections on 
Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

Jako tymczasowe rozwiązanie robię

brew services stop postgresql@11
brew services start postgresql@11
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.