pg_configsłuży do informacji o kompilacji, aby pomóc rozszerzeniom i programom klienckim kompilować i łączyć się z PostgreSQL. Nic nie wie o aktywnych instancjach PostgreSQL na komputerze, tylko pliki binarne.
pg_hba.confmoże pojawić się w wielu innych miejscach, w zależności od sposobu instalacji Pg. Średnia lokalizacja jest pg_hba.confw obrębie data_directorybazy danych (który może być w /home, /var/lib/pgsql, /var/lib/postgresql/[version]/, /opt/postgres/, etc etc etc), ale użytkownicy i pakowaniem można umieścić go tam, gdzie im się podoba. Niestety.
Jedynym prawidłowym sposobem znalezienia pg_hba.confjest zapytanie działającej instancji PostgreSQL, gdzie ona pg_hba.confjest, lub zapytanie sysadmin, gdzie ona jest. Nie możesz nawet polegać na pytaniu, gdzie jest datadir i analizowaniu, postgresql.confponieważ skrypt init może przekazać parametry, jak -c hba_file=/some/other/pathpodczas uruchamiania Pg.
Co chcesz zrobić, to zapytać PostgreSQL:
SHOW hba_file;
To polecenie musi zostać uruchomione w sesji superużytkownika, więc dla skryptów powłoki możesz napisać coś takiego:
psql -t -P format=unaligned -c 'show hba_file';
i ustawić zmienne środowiskowe PGUSER, PGDATABASEitp aby upewnić się, że połączenie jest w porządku.
Tak, jest to w pewnym sensie problem z kurczakiem i jajkiem, ponieważ jeśli użytkownik nie może się połączyć (powiedzmy, po zepsuciu edycji pg_hba.conf), nie możesz go znaleźć pg_hba.conf, aby go naprawić.
Inną opcją jest sprawdzenie danych pswyjściowych polecenia i sprawdzenie, czy argument katalogu danych postmaster -Djest tam widoczny, np
ps aux | grep 'postgres *-D'
ponieważ pg_hba.confbędzie w katalogu danych (chyba że korzystasz z Debiana / Ubuntu lub jakiejś pochodnej i używasz ich pakietów).
Jeśli celujesz w konkretne systemy Ubuntu z PostgreSQL zainstalowanym z pakietów Debian / Ubuntu, staje się to trochę łatwiejsze. Nie musisz zajmować się ręcznie skompilowanym ze źródła Pg, dla którego czyjś initdbda datadir w katalogu domowym, czy instalacją EnterpriseDB Pg w / opt itp. Możesz zapytać pg_wrapper, wersja Pg w wielu wersjach Debiana / Ubuntu menedżer, gdzie PostgreSQL używa się pg_lsclusterspolecenia z pg_wrapper.
Jeśli nie możesz się połączyć (Pg nie działa lub musisz edytować, pg_hba.confaby się połączyć), musisz przeszukać system w poszukiwaniu pg_hba.confplików. Na Macu i Linuksie coś takiego sudo find / -type f -name pg_hba.confzrobi. Następnie sprawdź PG_VERSIONplik w tym samym katalogu, aby upewnić się, że jest to poprawna wersja PostgreSQL, jeśli masz więcej niż jedną. (Jeśli pg_hba.confjest w /etc/, zignoruj to, zamiast tego jest to nazwa katalogu nadrzędnego). Jeśli masz więcej niż jeden katalog danych dla tej samej wersji PostgreSQL, musisz spojrzeć na rozmiar bazy danych, sprawdź wiersz poleceń uruchomionego postgres, psaby sprawdzić, czy jego -Dargument katalogu danych pasuje do miejsca, w którym edytujesz itp.