Мне нужно получить доступ к базе данных postgresql с удаленной машины на VPS в DigitalOcean под управлением 12.10 и postgresql 9.1.
Как мне это сделать? Я заметил, что порт 5432 закрыт, как мне открыть это?
Мне нужно получить доступ к базе данных postgresql с удаленной машины на VPS в DigitalOcean под управлением 12.10 и postgresql 9.1.
Как мне это сделать? Я заметил, что порт 5432 закрыт, как мне открыть это?
Ответы:
Чтобы открыть порт 5432, отредактируйте /etc/postgresql/9.1/main/postgresql.conf
и измените
listen_addresses='localhost'
в
listen_addresses='*'
и перезапустите вашу СУБД
invoke-rc.d postgresql restart
теперь вы можете связаться с
$ psql -h hostname -U username -d database
если вы не можете аутентифицировать себя, вам нужно предоставить права доступа к базе данных.
Отредактируйте свой
/etc/postgresql/9.1/main/pg_hba.conf
и добавить
host all all all md5
(Это для широкого открытого доступа. Для более строгого контроля, обратитесь к документации pg_hba.conf и отрегулируйте ее в соответствии с вашими потребностями).
После этого вам также необходимо перезагрузить
invoke-rc.d postgresql reload
Мне не нужно упоминать, что это базовая конфигурация, теперь вы должны подумать об изменении вашего брандмауэра и повышении безопасности вашей СУБД.
host <database> <user> <remote_client_IPaddress>/24 md5
Это больше не работает, если это когда-либо было:
хост все все * md5
Правильные возможные строки для этого:
хост все все 0.0.0.0/0 md5 # диапазон ipv4
хост все все :: диапазон 0/0 md5 # ipv6
хост все все все md5 # все ip
host all all all md5
будет работать нормально? Верно? есть проблемы с безопасностью?
Ответ, получивший наибольшее количество голосов, имеет серьезные последствия для безопасности. Этот метод по умолчанию отключен по уважительным причинам.
Лучше использовать локальную переадресацию портов с ssh
:
ssh -L local_port:localhost:foreign_port user@server
Начните переадресацию портов:
ssh -L 5432:localhost:5432 user@your-server.com
#or
ssh -L 5432:127.0.0.1:5432 user@your-server.com
(Измените локальные и внешние порты в соответствии с вашей конфигурацией).
Затем вы можете напрямую подключиться к базе данных с вашего локального компьютера:
psql -U db_user -p local_port -l