Не удается подключиться к базе данных postgres с удаленного хоста с помощью psycopg2? - PullRequest
1 голос
/ 18 марта 2020

Я не могу подключиться к базе данных postgres через удаленный хост с использованием psycopg2 и получаю сообщение об ошибке типа

Ошибка:

    File "/usr/lib64/python2.7/site-packages/psycopg2/__init__.py", line 126, in connect
     conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
     psycopg2.OperationalError: could not connect to server: Connection timed out
    Is the server running on host "192.x.x.x" and accepting
    TCP/IP connections on port 5432?

Примечание. Я внес следующие изменения

1. Обновлен хост файла конфигурации pg_hba, все все 0.0.0.1/32, доверие

2. Обновлен postgresql файл listen_addresses = '*'

3. Изменено правило брандмауэра. разрешить соединение через порт 5432 Что еще нужно сделать, чтобы оно работало?

1 Ответ

1 голос
/ 18 марта 2020

Для других, которые могут столкнуться с той же проблемой, вот несколько вещей, которые вы можете попробовать.

Убедитесь, что служба прослушивает необходимые интерфейсы

sudo ss -lntp | grep 5432

Если вы видите что-то вроде 127.0.0.1:5432 или ::1:5432, это означает localhost .
Tweak postgresql .conf :

listen_addresses='192.168.1.2, 127.0.0.1'

Вы также можете использовать '*' , что означает любой интерфейс, но в зависимости от конфигурации вашей сети это может быть опасно.
Убедитесь, что строка listen_addresses не закомментирована (как это было случай выше) и перезапустите службу после внесения изменений.

Проверьте конфигурацию брандмауэра
Убедившись, что служба прослушивает правильный интерфейс, убедитесь, что ваш firewall (s), если таковые имеются, разрешают клиенту подключаться к службе (это может означать ваш локальный брандмауэр, сетевое устройство, расположенное между клиентом и службой).

Check pg_hba.conf
Этот файл управляет механизмом аутентификации PostgreSQL на основе хоста:

# TYPE  DATABASE        USER            ADDRESS                 METHOD
host    all             all             192.168.1.3/32          md5

Линия выше позволяет всем пользователям подключаться с 192.168.1.3, если они предоставляют требуемый пароль; если вы хотите разрешить целую су bnet, вы можете использовать что-то вроде 192.168.1.0/24.

Если вы подозреваете проблему с psycopg2 или Python вами можно проверить подключение с помощью PostgreSQL клиента: psql:
psql -U postgres -h 192.168.1.2 db_name

...