Время соединения 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