Время соединения Postgresql истекло

Когда я подключаюсь к PSQL на удаленном сервере

>psql -h {hostname}
psql: could not connect to server: Connection timed out (0x0000274C/10060). Is the server running on host "{hostname}" (194.58.98.133) and accepting TCP/IP connections on port 5432?

На сервере:

netstat -nlp | grep 5432
tcp   0 0 0.0.0.0:5432   0.0.0.0:*  LISTEN  29609/postmaster
tcp        0      0 :::5432  :::*  LISTEN      29609/postmaster
unix  2   [ ACC ]  STREAM   LISTENING 2107633273 29609/postmaster   /tmp/.s.PGSQL.5432

на сервере нет iptables. Проверка связи с сервером прошла успешно.

Что я делаю не так?

4 ответа

Я получал такую ​​ошибку, когда мой pg_hba.conf или группы безопасности AWS не были настроены должным образом. Есть много документов о том, как решить эту проблему. Например, вы можете проверить ниже, цитируемый по этой ссылке

Ошибка: psql: не удалось подключиться к серверу: соединение отклонено. Сервер работает на хосте "192.168.0.1" и принимает соединения TCP/IP через порт 5432?

Распространенная причина: процесс демона сервера postmaster или PostgreSQL не запущен или настроен неправильно.

Когда вы получаете эту ошибку в большинстве случаев, это происходит из-за того, что PostgreSQL не настроен на разрешение соединений TCP/IP или, по крайней мере, не на соединения с вашей конкретной рабочей станцией. Если вы убедились, что postmaster действительно работает на хосте, к которому вы пытаетесь подключиться, вот список общих причин этой проблемы:

  • postgresql.conf не настроен для разрешения соединений TCP/IP. Вы хотите посмотреть на listen_address параметр конфигурации.
  • postgresql.conf не настроен на разрешение соединений по нестандартному номеру порта. Чтобы определить этот взгляд на port Вариант конфигурации.
  • правила аутентификации в файле конфигурации доступа PostgreSQL (pg_hba.conf) не настроены на то, чтобы разрешить вам или вашему IP-адресу подключаться к этой базе данных. Смотрите официальную документацию для получения дополнительной информации о настройке вашего pg_hba.conf должным образом.
  • убедитесь, что нет брандмауэров, таких как iptables которые не позволяют вашей локальной системе даже установить соединение с удаленным хостом

Вы должны взглянуть на postgresql.conf. Чтобы разрешить соединения отовсюду, вы должны установить для listen_adresses *:

listen_addresses = '*'

файл pg_hba.conf должен иметь такую ​​запись, чтобы разрешить подключение из вашей сети:

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
host    all             all             192.168.190.0/24        md5

В моем случае, поскольку у меня был управляемый экземпляр AWS RDS, проблема заключалась в правиле группы безопасности.

Добавление правила для входящего трафика с моего компьютера позволило установить соединение. Для получения более подробной информации обратитесь к: https://stackoverflow.com/a/70337387/4725074 .

Вы проверяли настройки брандмауэра? Попробуйте разрешить подключение по порту 5432. Например, Ubuntu ufw: sudo ufw allow 5432

Другие вопросы по тегам