Konfigurowanie pliku pg_hba.conf w celu umożliwienia dostępu z innych serwerów do bazy danych

15

Mam bazę danych Postgres na jednym serwerze i potrzebuję dostępu do niej z innego serwera.

Muszę edytować plik pg_hba.conf, ale mam teraz pomysł, jakie są kroki do edycji tego pliku. Centra serwerów

Muszę dodać następujący wiersz w pliku

host    all         all         10.0.2.12         255.255.255.255   trust

Znalazłem to w var/lib/pgsql/data/

Teraz w zasadzie nie jestem pewien, jakie są właściwe kroki, aby to zrobić

Elitmiar
źródło

Odpowiedzi:

14

Najpierw weź kopię zapasową podanego pg_hba.conf

sudo tar cvf /var/tmp/mybackup_pg_hba_conf.tar /var/lib/pgsql/data/pg_hba.conf

W ten sposób masz gotową starszą wersję, jeśli spieprzysz. Ładną funkcją archiwum tar jest to, że zachowuje uprawnienia i katalogi. Więc kiedy pg_hba.conf jest zepsuty nie do poznania. Możesz:

cd /
sudo tar xvf /var/tmp/mybackup_pg_hba_conf.tar

Spowoduje to przywrócenie kopii zapasowej pg_hba.conf z utworzonego wcześniej archiwum.

Co do faktycznego wstawienia linii:

sudo su -c 'echo "host    all         all         10.0.2.12         255.255.255.255   trust" >> /var/lib/pgsql/data/pg_hba.conf'

(UWAGA: Polecenie edytowane. Dzięki bortzmeyer!)

Powinien to zrobić. Zauważ, że to po prostu dodaje linię do pg_hba.conf. Jeśli kiedykolwiek będziesz musiał to zmienić, musisz użyć rzeczywistego edytora. Jak vi. Krzywa uczenia się może być nieco stroma, ale po opanowaniu przynajmniej podstaw powinieneś być całkiem bezpieczny w większości każdego środowiska uniksowego, które napotkasz.

Teraz, gdy wróciłem na ścieżkę, powinieneś spróbować ponownie uruchomić bazę danych postgresql. Wydaje mi się, że na maszynie Centos:

sudo service postgresql restart

lub możesz po prostu ponownie załadować konfigurację bez restartu:

su - postgres
pg_ctl reload

Teraz powinieneś mieć dostęp do bazy danych postrgresql Centos-Machines od 10.0.2.12

pyhimys
źródło
1
Sudo w ostatnim poleceniu nie będzie działać, ponieważ uprzywilejowana operacja jest wykonywana przez przekierowanie, które jest obsługiwane przez powłokę, a nie przez program uruchamiany za pomocą sudo (w tym przypadku echo).
bortzmeyer
Słuszna uwaga! Powinien być napisany jako sudo „echo” host all all 10.0.2.12 255.255.255.255 trust ”>> /var/lib/pgsql/data/pg_hba.conf”
pyhimys
Idealnym sposobem byłoby poddanie go kontroli wersji w lokalizacji administratora i wdrożenie po zmianie przez SSH itp.
vfclists
1
Domyślna lokalizacja pliku pg_hba.conf jest nieco inna w 9.4: /var/lib/pgsql/9.4/data/pg_hba.conf.
Sergey Vlasov,
13

Nie zapomnij edytować postgresql.conf i zmienić / dodać linię

listen_addresses = '*'

Postgresql domyślnie nasłuchuje na localhost

użytkownik16233
źródło
Czy Twój przykład list_addres nie jest zbyt pobłażliwy? Jest to luka w zabezpieczeniach, jeśli serwer działa na wielu adresach IP, tj. Publicznych, wewnętrznych, VPN itp.
vfclists