Не удается подключиться к postgres с удаленного хоста - PullRequest
35 голосов
/ 27 мая 2011

У меня есть сервер базы данных (192.168.1.50), на котором работает postgres. Я создал базу данных с именем «testdb» и пользователя «testuser» с паролем «testuserpw».
Локально я могу подключиться к БД, используя:

psql -d testdb -U testuser

Когда я запускаю команду с другого хоста (192.168.1.60):

psql -h 192.168.1.50 -d testdb -U testuser

У меня ошибка:

psql: could not connect to server: Connection refused
Is the server running on host "192.168.1.50" and accepting
TCP/IP connections on port 5432?

Есть идеи?

Ответы [ 5 ]

48 голосов
/ 27 мая 2011

Проверьте настройку listen_addresses в вашем файле postgresql.conf. Во многих дистрибутивах по умолчанию установлено значение 127.0.0.1, т. Е. Прослушиваются только соединения, поступающие с локального хоста. Он должен быть установлен на '*' для прослушивания соединений на всех интерфейсах.

Если у вас все еще возникают проблемы, используйте lsof, чтобы узнать, какие сетевые сокеты прослушивает процесс postgres.

6 голосов
/ 06 апреля 2013

В Ubuntu я заметил, что удаленный доступ в какой-то момент перестал работать (в настоящее время используется 9.1.9).Причина в том, что postgres больше не запускается с ключом -i [1], поэтому независимо от того, что вы настроили для listen_addresses, он будет игнорироваться.

К счастью, добавление следующей строки в /etc/environment решаетпроблема после выхода из системы и повторной загрузки (или перезагрузки):

PGOPTIONS="-i"

См. [2] для получения дополнительной информации.Обратите внимание, что добавление этого к /etc/postgresql/9.1/main/environment НЕ работало для меня.

Теперь, когда я делаю nmap ip-of-my-remote-server, я наконец получаю это снова:

5432/tcp open  postgresql

Yay!

[1] http://www.postgresql.org/docs/9.1/static/runtime-config-short.html

[2] http://www.postgresql.org/docs/9.1/static/libpq-envars.html

3 голосов
/ 27 мая 2011

Брандмауэр пропускает соединения? Или проверьте, разрешает ли pg_hba.conf подключение с адресов, отличных от localhost.

1 голос
/ 22 сентября 2013

Конфигурирование listen_address в postgresql.conf - не единственный способ заставить postgres прослушивать нелокальный IP-адрес (или адреса).

Используйте опцию "-o -h *", если вы запускаете postgres из pg_ctl, в противном случае добавьте "-h" "*" в командную строку postgres, например,

/ usr / local/ pgsql / bin / postgres -D / pg / data "-h" "*"

Конечно, / pg / data необходимо изменить на текущий путь к данным.

Это особенно полезно, когдаэкспериментирования.

0 голосов
/ 09 марта 2019

Я столкнулся с той же проблемой, что и ваша, и мой источник проблем - настройки брандмауэра.Если вы используете Ubuntu, распечатайте свой статус брандмауэра: sudo ufw status verbose

Это может выглядеть так:

Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
...

Правило по умолчанию для входящего соединения - "Отклонить", поэтому вам нужноуказать разрешенный порт ed.

тип: sudo ufw allow 5432/tcp

ссылка: https://www.vultr.com/docs/how-to-configure-ufw-firewall-on-ubuntu-14-04

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