
Мне нужно получить доступ к базе данных postgresql с удаленной машины на VPS в DigitalOcean, на которой запущены 12.10 и postgresql 9.1.
Как это сделать? Я заметил, что порт 5432 закрыт, как его открыть?
решение1
Чтобы открыть порт 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
Мне не нужно говорить, что это базовая конфигурация, теперь вам следует подумать об изменении вашего брандмауэра и повышении безопасности вашей СУБД.
решение2
Это больше не работает, если когда-то работало:
хост все все * md5
Правильные возможные строки для этого:
хост все все 0.0.0.0/0 md5 #ipv4 диапазон
хост все все ::0/0 md5 #ipv6 диапазон
хост все все все md5 #все ip
решение3
Для сообщения «сервер не слушает», которое произошло со мной, я имел в виду, что я не удалил # в архиве postgresql.conf:
#listen_addresses='localhost'
к:
прослушивать_адреса='*'
(Извините за мой английский).
решение4
После настройки вам необходимо установить:
В/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