it-swarm-eu.dev

PostgreSQL 9.2.4 (Windows 7) - Usługa nie uruchamia się, „nie można załadować pg_hba.conf”

Próbuję uruchomić Postgres 9.2.4 jako usługę w systemie Windows 7. Po zainstalowaniu postgres usługa działa poprawnie. Jednak po ustawieniu postgresu jako serwera dla innego programu usługa przestała działać. Gdy próbuję teraz uruchomić usługę, otrzymuję wiadomość z informacją:

„Usługa postgresql-x64-9.2 - PostgreSQL Server 9.2 na komputerze lokalnym została uruchomiona, a następnie zatrzymana. Niektóre usługi zatrzymują się automatycznie, jeśli nie są używane przez inne usługi lub programy”.

Gdy próbuję uruchomić program, który powinien korzystać z serwera bazy danych, pojawia się ten błąd:

„Napotkano problem podczas próby zalogowania się lub utworzenia produkcyjnej bazy danych. Szczegóły: Nie można połączyć się z serwerem; Nie można połączyć się ze zdalnym gniazdem. Aplikacja musi się teraz zamknąć”

Ten błąd wystąpił również raz podczas otwierania tego samego programu:

„Wystąpił problem podczas próby zalogowania się lub utworzenia produkcyjnej bazy danych. Szczegóły: FATAL: nie można załadować pg_hba.conf Aplikacja musi się teraz zamknąć.”

Próbowałem uruchomić usługę zalogowaną jako lokalne konto systemowe, jak również moje własne konto (w właściwościach usługi postgres) bezskutecznie. Próbowałem również ponownie uruchomić komputer. Po wielu rozwiązaniach online, dowiedziałem się, że dobrą rzeczą do sprawdzenia jest plik pg_log. Oto zawartość najnowszego wpisu pg_log:

2013-05-29 14:59:45 MDT LOG:  database system was interrupted; last known up at 2013-05-29 14:58:01 MDT
2013-05-29 14:59:45 MDT LOG:  database system was not properly shut down; automatic recovery in progress
2013-05-29 14:59:45 MDT LOG:  record with zero length at 0/175BB98
2013-05-29 14:59:45 MDT LOG:  redo is not required
2013-05-29 14:59:45 MDT LOG:  database system is ready to accept connections
2013-05-29 14:59:45 MDT LOG:  autovacuum launcher started
2013-05-29 15:07:00 MDT LOG:  local connections are not supported by this build
2013-05-29 15:07:00 MDT CONTEXT:  line 1 of configuration file "C:/PostgreSQL/data/pg_hba.conf"
2013-05-29 15:07:00 MDT FATAL:  could not load pg_hba.conf
2013-05-29 15:07:00 MDT LOG:  local connections are not supported by this build
2013-05-29 15:07:00 MDT CONTEXT:  line 1 of configuration file "C:/PostgreSQL/data/pg_hba.conf"
2013-05-29 15:07:00 MDT FATAL:  could not load pg_hba.conf
2013-05-29 15:09:03 MDT LOG:  received fast shutdown request
2013-05-29 15:09:03 MDT LOG:  aborting any active transactions
2013-05-29 15:09:03 MDT LOG:  autovacuum launcher shutting down
2013-05-29 15:09:03 MDT LOG:  shutting down
2013-05-29 15:09:03 MDT LOG:  database system is shut down

Wydaje się, że ma problemy z plikiem pg_hba.conf, który wygląda tak:

local all all trust
Host all all 127.0.0.1 255.255.255.255 trust
Host all all 0.0.0.0 0.0.0.0 trust

Zgodnie z wieloma sugestiami online próbowałem edytować górną linię do wielu różnych alternatyw (Hostuj całe zaufanie/Host wszystkie zaufanie 127.0.0.1/32/Host wszystkie 192.168.0.100/24 ​​zaufanie, itp.). Miało to dla mnie sens, ponieważ plik dziennika mówił, że połączenia lokalne nie są obsługiwane przez postgres i wskazywały również na tę linię. Jednak żadna z moich zmian nie miała żadnego skutku. Próbowałem ponownie uruchomić komputer po każdej zmianie, ale nic nie miało znaczenia.

Kiedy szukałem przykładów tego, jak normalnie wygląda plik pg_hba.conf, przykłady wyglądały nieco inaczej niż mój plik. Zauważyłem, że w pliku programu PostgreSQL, oprócz pg_hba.conf, znajdował się również plik „20130529-150444-old-pg_hba.conf”, który wyglądał bardziej jak przykłady, które znalazłem w Internecie. Ten plik ma kilka wierszy komentarzy przed tymi ostatnimi wierszami:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# IPv4 local connections:
Host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
Host    all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
#Host    replication     postgres        127.0.0.1/32            md5
#Host    replication     postgres        ::1/128                 md5

Miałem nadzieję, że jest to oryginalny plik pg_hba.conf i że jeśli zastąpię nowy plik zawartością starego, postgres ponownie zacznie działać. Nie ma szczęścia. Liczyłem na to, że więcej plików błędów zostanie zapisanych w pg_log, aby sprawdzić, czy poprzednio stwierdzony błąd zniknął lub zmienił się na coś innego, ale nie zarejestrowano więcej plików.

Od kilku dni rozwiązuję problemy online i nic, co znalazłem, nie zadziałało. Przepraszamy za tak długie pytanie, ale chciałem być dokładny i zawrzeć wszystkie istotne informacje. Byłbym wdzięczny, gdyby ktoś mógł rzucić trochę światła na ten problem lub zaproponować sugestie.

9
user2437443

Lokalny wpis nie jest obsługiwany na komputerach z systemem Windows. Patrz E.20.3.1.3. Uwierzytelnianie .

Odrzuć lokalne linie w pg_hba.conf na platformach, które nie obsługują połączeń w Uniksie (Magnus Hagander)

Dawniej takie linie były po cichu ignorowane, co może być zaskakujące. To sprawia, że ​​zachowanie jest bardziej podobne do innych nieobsługiwanych przypadków.

Zmień konfigurację z:

local  all    all     trust

do:

Host   all    all   127.0.0.1/32  trust
Host   all    all   ::1/128       trust

Aby uzyskać więcej informacji, skonsultuj się z 19.1. Plik pg_hba.conf .

6
jim31415

Miałem ten problem z Postgresql w wersji 8.3 po zainstalowaniu go na komputerze z systemem Windows 7. Początkowo działał normalnie, ale nagle przestał działać (prawdopodobnie po aktualizacji systemu Windows). Wiele niepewnych osób zmieniło uprawnienia, ale nie wprowadziło ich do działania. Kilka miesięcy później znalazłem problem w pustym pliku, w międzyczasie powinien mieć jakieś dane. Zweryfikuj tę ścieżkę: C: Program Files (x86) Postgresql 8.3 Dane (gdzie 8.3 musi zostać zastąpione numerem wersji). Sprawdź, czy plik Postmaster.pid jest pusty lub nie (otwórz go za pomocą Wordpada lub Notatnika). Jeśli jest pusty, zmień jego nazwę na _Postmaster.pid (lub inną nazwę). Przejdź do menu Start iw polu poleceń wpisz services.msc Naciśnij Enter Znajdź wpis bazy danych Postgresql Kliknij dwukrotnie na nim Kliknij przycisk Start Jeśli usługa się uruchomi, zostanie utworzony nowy postmaster.pid (z niektórymi danymi) Możesz to sprawdzić na ścieżce wskazanej powyżej.

Dobra wskazówka pochodzi z analizy Podglądu zdarzeń: Otwórz Eksploratora Windows, wybierz „Komputer”, kliknij prawym przyciskiem myszy „Zarządzaj”, wybierz „Podgląd zdarzeń”, poczekaj „Podsumowanie zdarzeń administracyjnych”, aby załadować, otwórz węzeł „Błąd”, zlokalizuj Wpis „PostgreSQL” w kolumnie „Źródło” i kliknij dwukrotnie. W pliku Postmaster.pid znajdowała się wskazówka informująca o fałszywych danych.

Mam nadzieję, że te informacje mogą ci pomóc. Twoje zdrowie! Ed.

5
Eduardo

W takim przypadku najlepiej jest przeanalizować logi systemu operacyjnego. W przypadku okien sprawdź „Podgląd zdarzeń” -> „Aplikacja”. Taki błąd może wystąpić z różnych powodów. W moim przypadku działał już postgres. Dowiedziałem się o tych informacjach w dziennikach systemu Windows.

2
bluelurker

Miałem ten sam problem. To, co dla mnie działało:

  1. Otwórz plik postgresql.conf (zwykle znajduje się on w C: Program Files PostgreSQL 9,4)
  2. Skomentuj numer linii 147 (shared_preload_libraries = '$libdir/plugins/plugin_debugger.dll')
2
Oliver Drummond

Problem polega na tym, że ta wersja postgres pod win7 nie obsługuje połączeń lokalnych. Na moim lokalnym komputerze musiałem pilnie pracować z pg, więc nie przejmowałem się zbytnio bezpieczeństwem, więc może nie jest to najlepsze rozwiązanie dla środowiska na żywo. Ale mój lokalny komputer wystarczył.

Usunąłem wszystkie inne niekomentowane linie z pg_hba.conf i pozostawiłem je tylko w następującym:

Host    all             all             ::1/0                 trust

Po tym mogłem połączyć się z linii poleceń.

Nie rozumiem, dlaczego instrukcja nie mówi więcej na ten temat. Jestem pewien, że wiele osób ma z tym problem.

2
halmai

Tak więc szybkie wyłączenie odpowiedzialności, teraz uruchamiam PostgreSQL w systemie Linux. Ale lata temu uruchomiłem go w systemie Windows. I wydaje mi się, że pamiętam ten problem. Myślę, że wskazówka jest w tej linii:

2013-05-29 15:07:00 MDT LOG:  local connections are not supported by this build

połączenia lokalne to sprawa Uniksa. Używasz okien. Więc „nie obsługiwane przez tę kompilację”. Spróbuj zmienić lokalne na localhost i zrestartuj. Oto wprowadź opis linku tutaj do podobnego problemu opublikowanego na liście dyskusyjnej Postgres:

0
David S

Popełniłem błąd w postgresql.conf. Zrobiłem

max_prepared_transactions = 16*max_connections  # zero disables the feature

gdzie wcześniej w tym pliku jest,

max_connections=100

Nie można tego zrobić, a następujące prace:

max_prepared_transactions = 1600    # zero disables the feature
0
ericj

„Usługa na komputerze lokalnym została uruchomiona, a następnie zatrzymana. Niektóre usługi zatrzymują się automatycznie, jeśli nie są używane przez inne usługi lub programy”.

Teraz wyjaśnię, jak rozwiązać usługę uruchomioną na komputerze lokalnym, a następnie zatrzymać, niektóre usługi zatrzymują się automatycznie, jeśli nie są używane przez inne usługi lub programy.

Aby rozwiązać ten problem, mamy dwa sposoby

Pierwsza droga

Start -> Uruchom -> Wpisz Services.msc i kliknij przycisk Enter, a następnie otrzymasz wszystkie usługi na swoim komputerze po tym, jak wybierzesz usługę i kliknij na nią prawym przyciskiem myszy i przejdź do Właściwości

Po otwarciu zakładki Wybierz logowanie w tym polu wybierz Lokalne konto systemowe i kliknij OK, teraz problem zostanie rozwiązany

0
Lashe