У меня есть два сервера, размещенных в разных местах, с Postgresql.
Я хочу получить доступ к данным Postgresql с сервера 1 (CentOS 7), путем postgresql FDW с сервера 2 (Ubuntu 16).
Проблема:
psql: could not connect to server: Connection refused Is the server running on host "xxx.xxx.xxx.xxx" and accepting TCP/IP connections on port 5432?
Я отредактировал файл postgresql.conf с listenaddresses='*' и оба файла pghba.conf с помощью host all all 0.0.0.0/0 md5
все еще не работает, поэтому я подумал, что это может быть вызвано iptables. Я добавляю эти правила:
iptables -A INPUT -p tcp -m tcp --dport 5432 -j ACCEPT iptables -A OUTPUT -p tcp -m tcp --dport 5432 -j ACCEPT
Все еще не работает.
Спасибо вам!
(извините за мой английский)
С точки зрения сети, сервер 2 является клиентом, а сервер 1 - сервером. Операционная система клиента сообщает, что Connection отказалась при попытке подключения к xxx.xxx.xxx.xxx:5432.
Обычно эта ошибка не связана с брандмауэром, поскольку брандмауэры имеют тенденцию отбрасывать пакеты, которые производят Соединение отклонено .
Это также не связано с ошибкой аутентификации на основе хоста postgres, поскольку они создают совершенно разные и конкретные сообщения об ошибках.
Несколько правдоподобных причины:
PostgreSQL действительно не прослушивает порт 5432 на сервере 1. Это может быть подтверждено командой netstat -tlnp | grep 5432 запуститься как root. Обратите внимание, что параметр конфигурации listen_addresses, а не listenaddresses. Кроме того, после этого изменения необходимо перезапустить postgres. Вы можете посмотреть журналы журналов postgres, чтобы подтвердить, что они сработали, или проверить причину, почему это не так. Конфигурация сети такова, что сервер 1 не может быть достигнут с сервера 2 с адресом xxx.xxx.xxx.xxx. Пакеты маршрутизируются в другом месте, в сетевом интерфейсе, где 5432 как порт TCP не привязан к службе. Например, если сервер 1 виртуализирован, ожидается, что он не может быть достигнут непосредственно через адрес его хоста.С точки зрения сети, сервер 2 является клиентом, а сервер 1 - сервером. Операционная система клиента сообщает, что Connection отказалась при попытке подключения к xxx.xxx.xxx.xxx:5432.
Обычно эта ошибка не связана с брандмауэром, поскольку брандмауэры имеют тенденцию отбрасывать пакеты, которые производят Соединение отклонено .
Это также не связано с ошибкой аутентификации на основе хоста postgres, поскольку они создают совершенно разные и конкретные сообщения об ошибках.
Несколько правдоподобных причины:
PostgreSQL действительно не прослушивает порт 5432 на сервере 1. Это может быть подтверждено командой netstat -tlnp | grep 5432 запуститься как root. Обратите внимание, что параметр конфигурации listen_addresses, а не listenaddresses. Кроме того, после этого изменения необходимо перезапустить postgres. Вы можете посмотреть журналы журналов postgres, чтобы подтвердить, что они сработали, или проверить причину, почему это не так. Конфигурация сети такова, что сервер 1 не может быть достигнут с сервера 2 с адресом xxx.xxx.xxx.xxx. Пакеты маршрутизируются в другом месте, в сетевом интерфейсе, где 5432 как порт TCP не привязан к службе. Например, если сервер 1 виртуализирован, ожидается, что он не может быть достигнут непосредственно через адрес его хоста.