Удаленный доступ к базе данных postgresql

I need to access a postgresql database from a remote machine on a VPS at DigitalOcean running 12.10 and 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

Мне не нужно упоминать, что это базовая конфигурация, теперь вам следует подумать об изменении вашего брандмауэра и повышении безопасности вашей СУБД.

Это больше не работает, если вообще когда-либо работало :

хост все все * md5

Правильными возможными строками для этого являются :

хост все все 0.0.0.0/0 md5 #диапазон ipv4

хост все все ::0/0 md5 #диапазон ipv6

хост все все все md5 #все ip

Источник

Для сообщения "сервер не прослушивает", которое случилось со мной, было то, что я не стираю # в архиве postgresql.conf, я имею в виду:

#listen_addresses='localhost'

к:

listen_addresses='*'

(Извините за мой английский).

Наиболее проголосовавший и принятый ответ имеет серьезные нарушения безопасности. Этот метод по умолчанию отключен по уважительным причинам.

Лучше использовать локальную переадресацию портов с ssh:

ssh -L local_port:localhost:foreign_port user@server

Запустите переадресацию портов:

ssh -L 5432:localhost:5432 user@your-server.com#orssh -L 5432:127.0.0.1:5432 user@your-server.com

(Измените локальные и внешние порты в соответствии с вашей конфигурацией).

Затем вы можете напрямую подключиться к базе данных со своего локального компьютера:

psql -U db_user -p local_port -l

После настройки вам необходимо установить:

В /etc/postgresql/10/main/postgresql.conf

# Connection Settings -listen_addresses = '*'          # what IP address(es) to listen on;

В /etc/postgresql/10/main/pg_hba.conf

# IPv4 local connections:host    all             all             0.0.0.0/0           md5

Перезагрузите свой сервер:

sudo /etc/init.d/postgresql restart

Чтобы открыть ваш порт 5432, вам необходимо выполнить эту команду

sudo ufw allow 5432/tcp

Выполните действия, указанные в How to enable or allow remote access to PostgreSQL database server. | JavaByPatel: Data structures and algorithms interview questions in Java и измените номер порта, присутствующий в файле postgresql.conf. после смены порта перезапустите сервер PostgreSQL.

Url, опубликованный @Jayesh, сделал свое дело. Последовал инструкциям и успешно подключил один из моих компьютеров разработки к другому (от Windows с pgAdmin4 до Ubuntu 18.04 postgresql 10.9)