Potrzebuję dostępu do bazy danych postgresql ze zdalnego komputera na VPS w DigitalOcean z systemem 12.10 i postgresql 9.1.
Jak mam to zrobic? Zauważyłem, że port 5432 jest zamknięty. Jak mogę to otworzyć?
Potrzebuję dostępu do bazy danych postgresql ze zdalnego komputera na VPS w DigitalOcean z systemem 12.10 i postgresql 9.1.
Jak mam to zrobic? Zauważyłem, że port 5432 jest zamknięty. Jak mogę to otworzyć?
Odpowiedzi:
Aby otworzyć port 5432, edytuj /etc/postgresql/9.1/main/postgresql.conf
i zmień
listen_addresses='localhost'
do
listen_addresses='*'
i ponownie uruchom DBMS
invoke-rc.d postgresql restart
teraz możesz się połączyć
$ psql -h hostname -U username -d database
jeśli nie możesz się uwierzytelnić, musisz dać swojemu użytkownikowi prawa dostępu do bazy danych
Edytuj swój
/etc/postgresql/9.1/main/pg_hba.conf
i dodaj
host all all all md5
(Ma to na celu szeroko otwarty dostęp. W celu ściślejszej kontroli zapoznaj się z dokumentacją pg_hba.conf i dostosuj ją zgodnie z potrzebami).
Odtąd potrzebujesz również przeładowania
invoke-rc.d postgresql reload
Nie muszę wspominać, że jest to podstawowa konfiguracja, teraz powinieneś pomyśleć o modyfikacji zapory ogniowej i poprawie bezpieczeństwa DBMS.
host <database> <user> <remote_client_IPaddress>/24 md5
To już nie działa, jeśli kiedykolwiek:
hostuj wszystko * md5
Prawidłowe możliwe wiersze to:
hostuj wszystkie 0,0.0.0/0 md5 # ipv4
hostuj wszystko :: zakres 0/0 md5 # ipv6
hostuj wszystkie wszystkie md5 # all ip
host all all all md5
będzie dobrze? Jest poprawna? jakiś problem z bezpieczeństwem?
Najwyżej głosowana i zaakceptowana odpowiedź ma poważne domniemania bezpieczeństwa. Ta metoda jest domyślnie wyłączona z ważnych powodów.
Lepsze wykorzystanie przekierowania portów lokalnych dzięki ssh
:
ssh -L local_port:localhost:foreign_port user@server
Rozpocznij przekierowywanie portów:
ssh -L 5432:localhost:5432 user@your-server.com
#or
ssh -L 5432:127.0.0.1:5432 user@your-server.com
(Zmień porty lokalne i zagraniczne w celu dopasowania do konfiguracji).
Następnie możesz bezpośrednio połączyć się z bazą danych z komputera lokalnego:
psql -U db_user -p local_port -l