Zainstalowałem stos Bitnami Django, który zawierał PostgreSQL 8.4.
Po uruchomieniu psql -U postgres
pojawia się następujący 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"?
PG na pewno działa, a pg_hba.conf
plik wygląda następująco:
# TYPE DATABASE USER CIDR-ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all md5
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
Co daje?
„Dowód”, że pg działa:
root@assaf-desktop:/home/assaf# ps axf | grep postgres
14338 ? S 0:00 /opt/djangostack-1.3-0/postgresql/bin/postgres -D /opt/djangostack-1.3-0/postgresql/data -p 5432
14347 ? Ss 0:00 \_ postgres: writer process
14348 ? Ss 0:00 \_ postgres: wal writer process
14349 ? Ss 0:00 \_ postgres: autovacuum launcher process
14350 ? Ss 0:00 \_ postgres: stats collector process
15139 pts/1 S+ 0:00 \_ grep --color=auto postgres
root@assaf-desktop:/home/assaf# netstat -nltp | grep 5432
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 14338/postgres
tcp6 0 0 ::1:5432 :::* LISTEN 14338/postgres
root@assaf-desktop:/home/assaf#
postgresql
Assaf Lavie
źródło
źródło
Odpowiedzi:
Ten problem pochodzi z instalacji
postgres
pakietu bez numeru wersji. Chociażpostgres
zostanie zainstalowany i będzie to poprawna wersja, skrypt do konfiguracji klastra nie będzie działał poprawnie; to kwestia pakowania.Jeśli nie masz nic
postgres
przeciwko, możesz utworzyć skrypt i uruchomić ten klasterpostgres
. Istnieje jednak prostszy sposób.Najpierw wyczyść starą instalację Postgres. Problem leży obecnie w wersji 9.1, więc założę, że właśnie to zainstalowałeś
Teraz po prostu zainstaluj ponownie
Zanotuj nazwę pakietu wraz z numerem wersji. HTH.
źródło
Komunikat o błędzie odnosi się do gniazda w domenie Uniksa, więc musisz dostosować swoje
netstat
wywołanie, aby ich nie wykluczyć. Wypróbuj więc bez opcji-t
:Domyślam się, że serwer faktycznie nasłuchuje na gnieździe,
/tmp/.s.PGSQL.5432
a nie ten/var/run/postgresql/.s.PGSQL.5432
, z którym klient próbuje się połączyć. Jest to typowy problem w przypadku korzystania z ręcznie skompilowanych lub innych pakietów PostgreSQL na Debianie lub Ubuntu, ponieważ domyślnym źródłem źródłowego katalogu gniazd w domenie Unix jest to, że pakiet Debian/tmp
go zmienia/var/run/postgresql
.Możliwe obejścia:
/opt/djangostack-1.3-0/postgresql/bin/psql
). Ewentualnie całkowicie odinstaluj pakiety dostarczone przez Ubuntu (może to być trudne z powodu innych zależności odwrotnych).-H localhost
Zamiast tego użyj do połączenia przez TCP / IP.-h /tmp
lub równoważnePGHOST
ustawienie, aby wskazać właściwy katalog.źródło
To działa dla mnie:
Edycja: postgresql.conf
Włącz lub dodaj:
Uruchom ponownie silnik bazy danych:
Możesz także sprawdzić plik
pg_hba.conf
I dodaj adres sieci lub hosta:
źródło
Możesz użyć,
psql -U postgres -h localhost
aby wymusić połączenie przez TCP zamiast gniazd domeny UNIX; twojenetstat
dane wyjściowe pokazują, że serwer PostgreSQL nasłuchuje na porcie 5432 hosta lokalnego.Możesz dowiedzieć się, które lokalne gniazdo UNIX jest używane przez serwer PostgrSQL, korzystając z innego wywołania netstat :
W każdym razie skonfigurowane są interfejsy, na których nasłuchuje serwer PostgreSQL
postgresql.conf
.źródło
Wystarczy utworzyć taki softlink:
źródło
Sprawiam, że działa tak:
Wybierz preferowane ustawienia regionalne, a następnie uruchom
(9.5 to moja wersja postgresql)
i wtedy to działa!
źródło
service postgresql restart
ale oznacza to, że nie mam żadnego klastra postgresql. Potem znajduję ten sposób, aby mi pomóc :)dpkg-reconfigure locales
jest cholernie ważne.Musiałem skompilować PostgreSQL 8.1 na Debian Squeeze, ponieważ używam Project Open, który jest oparty na OpenACS i nie będzie działał na nowszych wersjach PostgreSQL.
Domyślna konfiguracja kompilacji stawia
unix_socket
in/tmp
, ale projekt open, która opiera się na PostgreSQL, nie będzie działać, ponieważ wygląda dlaunix_socket
co/var/run/postgresql
.Jest ustawienie w,
postgresql.conf
aby ustawić lokalizację gniazda. Mój problem polegał na tym, że albo mogłem ustawić/tmp
ipsql
pracować, ale projekt nie był otwarty, lub mogłem ustawić/var/run/postgresql
ipsql
nie działał, ale projekt był otwarty.Jednym z rozwiązań tego problemu jest ustawienie gniazda dla,
/var/run/postgresql
a następnie uruchomieniepsql
, zgodnie z sugestią Piotra, jako:Działa to lokalnie przy użyciu uprawnień lokalnych. Jedyną wadą jest to, że piszą więcej niż po prostu „psql”.
Inną sugestią, którą ktoś zaproponował, było utworzenie symbolicznego połączenia między dwiema lokalizacjami. To również działało, ale link zniknął po ponownym uruchomieniu. Być może łatwiej jest po prostu użyć argumentu -h, jednak utworzyłem dowiązanie symboliczne ze skryptu PostgreSQL w
/etc/init.d
. Umieściłem polecenie tworzenia łącza symbolicznego w sekcji „start”. Oczywiście, kiedy wydam polecenie stop i start lub restart, spróbuje odtworzyć istniejące dowiązanie symboliczne, ale oprócz komunikatu ostrzegawczego prawdopodobnie nie ma w tym żadnej szkody.W moim przypadku zamiast:
mam
i jawnie ustawiłem unix_socket na
/var/run/postgresql/.s.PGSQL.5432
inpostgresql.conf
.źródło
Rozwiązanie:
Zrób to
i to. ( 9.3 to moja aktualna wersja PostgreSQL. Napisz swoją wersję!)
źródło
Jeśli Twoja usługa Postgres działa bezbłędnie lub nie ma błędu podczas uruchamiania usługi Postgres i nadal pojawia się wspomniany błąd, wykonaj następujące kroki
Krok 1: Uruchomienie
pg_lsclusters
wyświetli listę wszystkich klastrów Postgres działających na twoim urządzeniuna przykład:
najprawdopodobniej status spadnie w twoim przypadku i usłudze postgres
Krok 2: Uruchom ponownie pg_ctlcluster
Krok 3: Krok 2 nie powiódł się i zgłosił błąd
Jeśli ten proces się nie powiedzie, wygeneruje błąd. Możesz zobaczyć błąd logowania
/var/log/postgresql/postgresql-9.6-main.log
Mój błąd to:
Krok 4: sprawdź własność postgres
Upewnij się, że
postgres
jest właścicielem/var/lib/postgresql/version_no/main
Jeśli nie, uruchom
Krok 5: Sprawdź, czy użytkownik postgres należy do grupy użytkowników ssl-cert
Okazało się, że błędnie usunąłem użytkownika Postgres z
ssl-cert
grupy. Uruchom poniższy kod, aby naprawić problem z grupą użytkowników i naprawić uprawnieniaźródło
W moim przypadku było to spowodowane literówką, którą popełniłem podczas edycji
/etc/postgresql/9.5/main/pg_hba.conf
Zmieniłam:
do:
Ale
MD5
musiało być pisane małymi literamimd5
:źródło
trusted
zamiasttrust
, a nie ponowne uruchomienie usługi, i to tylko złamał się następnego dnia, kiedy już zapomniał, co zmieniłemOdkryłem, że odinstalowanie Postgres brzmi nieprzekonująco. Pomaga to rozwiązać mój problem:
Uruchom serwer Postgres:
Upewnij się, że serwer uruchamia się przy rozruchu:
Szczegółowe informacje można znaleźć na stronie DigitalOcean tutaj.
źródło
Nie udało mi się rozwiązać tego problemu na moim serwerze postgres-9.5. Po 3 dniach zerowego postępu, wypróbowując każdą permutację poprawki na tej i innych stronach, zdecydowałem się ponownie zainstalować serwer i stracić 5 dni pracy. Ale powtórzyłem problem w nowej instancji. To może dać pewne spojrzenie na to, jak to naprawić, zanim zastosujesz katastroficzne podejście, które zrobiłem.
Najpierw wyłącz wszystkie ustawienia rejestrowania w postgresql.conf. To jest sekcja:
Skomentuj wszystko w tej sekcji. Następnie uruchom ponownie usługę.
Podczas ponownego uruchamiania użyj
/etc/init.d/postgresql start
lubrestart
uważam, że pomocne było przejście do trybu superużytkownika podczas ponownego uruchamiania. Miałem otwarte okno X tylko dla tej operacji. Możesz ustawić ten tryb administratora za pomocąsudo -i
.Sprawdź, czy serwer jest dostępny za pomocą tego prostego polecenia:
psql -l -U postgres
Jeśli to nie rozwiąże problemu, rozważ to:
Zmieniłem właściciela wielu folderów, próbując znaleźć rozwiązanie. Wiedziałem, że prawdopodobnie będę próbował cofnąć prawa własności do folderów
chmod
przez 2 kolejne dni. Jeśli pomieszałeś już z tymi własnościami folderów i nie chcesz całkowicie wyczyścić serwera, zacznij śledzić ustawienia wszystkich folderów, których dotyczy problem, aby przywrócić je do pierwotnego stanu. Możesz spróbować wykonać równoległą instalację w innym systemie i systematycznie sprawdzać własność i ustawienia wszystkich folderów. Nużący, ale możesz mieć dostęp do swoich danych.Po uzyskaniu dostępu należy systematycznie zmieniać każdą odpowiednią linię w
# ERROR REPORTING AND LOGGING
sekcjipostgresql.conf
pliku. Uruchom ponownie i przetestuj. Odkryłem, że domyślny folder dzienników powodował awarię. Szczególnie skomentowałemlog_directory
. Domyślny folder, w którym system upuszcza logi, to/var/log/postgresql
.źródło
Możliwe, że tak się stało, ponieważ zmieniłeś uprawnienia do
/var/lib/postgresql/9.3/main
folderu.Spróbuj zmienić go na 700 za pomocą poniższego polecenia:
źródło
To nie jest dokładnie związane z pytaniem, ponieważ używam Flask, ale to był dokładnie ten błąd, który otrzymywałem i był to najbardziej odpowiedni wątek do zdobywania pomysłów.
Moja konfiguracja: Windows Subsystem for Linux, Docker-compose w / makefile w / dockerfile, Flask, Postgresql (używając schematu składającego się z tabel)
Aby połączyć się z postgres, skonfiguruj parametry połączenia w następujący sposób:
UWAGA: Nigdy nie dostałem żadnego adresu IP (np. Localhost, 127.0.0.1) do pracy przy użyciu dowolnej metody w tym wątku. Pomysł użycia nazwy kontenera zamiast localhost zrodził się stąd: https://github.com/docker-library/postgres/issues/297
Ustaw swój schemat:
Podczas konfigurowania sesji ustaw ścieżkę wyszukiwania funkcji:
źródło
Miałem dokładnie ten sam problem, który opisał Peter Eisentraut. Za pomocą
netstat -nlp | grep 5432
polecenia mogłem zobaczyć, że serwer nasłuchuje na gnieździe/tmp/.s.PGSQL.5432
.Aby to naprawić, po prostu edytuj
postgresql.conf
plik i zmień następujące linie:Teraz uruchom
service postgresql-9.4 restart
(Zastąp 9-4 wersją), a połączenia zdalne powinny już działać.Teraz, aby zezwolić na połączenia lokalne, po prostu utwórz symboliczne łącze do
/var/run/postgresql
katalogu.Nie zapomnij upewnić się, że twój też
pg_hba.conf
jest poprawnie skonfigurowany.źródło
W moim przypadku wszystko, co musiałem zrobić, to:
i wtedy
To działało dobrze. Mam nadzieję, że to pomoże. Twoje zdrowie :) .
źródło
Znajdź swój plik:
Wynik:
Zaloguj się jako użytkownik postgres:
źródło
Miałem ten sam problem (na Ubuntu 15.10 (przebiegły)).
sudo find / -name 'pg_hba.conf' -print
lubsudo find / -name 'postgresql.conf' -print
okazało się puste. Wcześniej wydawało się, że zainstalowano wiele instancji postgresql.Możesz mieć podobne, gdy widzisz jako zainstalowane, lub listę problemów z zależnościami
i tak dalej.
W takim przypadku musisz
sudo apt-get autoremove
każdy pakiet 1 na 1.Następnie postępuj zgodnie z listem i wszystko będzie dobrze. Zwłaszcza jeśli chodzi o PIERWSZE importowanie i dodawanie kluczy do listy źródeł
Jeśli nie używasz podstępnie, zamień na
wily
swoje wydanie, tj. Na wyjścielsb_release -cs
A potem powinieneś być w porządku i móc łączyć się i tworzyć użytkowników.
Oczekiwany wynik:
Źródło moich rozwiązań (kredyty)
źródło
Mając ten sam problem, próbowałem czegoś innego:
Uruchamiając ręcznie demona postgresql, otrzymałem:
Więc to, co zrobiłem, było ustawienie dolnego limitu dla
shared_buffers
imax_connections
dopostgresql.conf
irestart
usługi.To naprawiło problem!
Oto pełny dziennik błędów:
źródło
Po wielu wyczerpujących próbach znalazłem rozwiązanie oparte na innych postach!
źródło
Utwórz katalog postgresql w trakcie uruchamiania, a następnie uruchom następującą komendę.
źródło
Po prostu dodaj / tmp unix_socket_directories
postgresql.conf
źródło