Не удается подключиться к Postgresql на порту 5432

У меня установлен PostgreSQL 9.3 на сервере под управлением Ubuntu Server 14.04.

Если я передаю ssh на сервер через терминал, я могу подключиться к psql. Но когда я пытаюсь настроить pgAdmin III для удаленного подключения, я получаю:

Сервер не прослушивает. Сервер не принимает подключения: отчеты библиотеки подключений не могут подключаться к серверу. Соединение отклонено. Сервер работает на хосте "172.24.3.147" и принимает соединения TCP/IP на порт 5432?

Когда я запускаю service postgresql status сервера, он дает мне:

9.3/main (port 5432): online

Поэтому, конечно, я упускаю что-то важное.

РЕДАКТИРОВАТЬ

При запуске netstat -na на сервере, я получаю (соответствующая часть, я думаю):

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN     
tcp        0      0 172.24.3.147:22         172.24.3.240:61950      ESTABLISHED
tcp        0      0 172.24.3.147:22         172.24.3.240:60214      ESTABLISHED

Ответ 1

Вы должны отредактировать файл postgresql.conf и изменить строку с помощью "listen_addresses".

Этот файл вы можете найти в каталоге /etc/postgresql/9.3/main.

В конфигурации Ubuntu по умолчанию разрешен только интерфейс localhost (или 127.0.0.1), который достаточно использовать, когда каждый клиент PostgreSQL работает на том же компьютере, что и сервер PostgreSQL. Если вы хотите подключить сервер PostgreSQL с других компьютеров, вы должны изменить эту строку конфигурации следующим образом:

listen_addresses = '*'

Затем вы также должны отредактировать файл pg_hba.conf. В этом файле вы указали, с каких компьютеров вы можете подключиться к этому серверу и какой метод аутентификации вы можете использовать. Обычно вам понадобится аналогичная строка:

host    all         all         192.168.1.0/24        md5

Пожалуйста, прочитайте комментарии в этом файле...

РЕДАКТИРОВАТЬ:

После редактирования postgresql.conf и pg_hba.conf вы должны перезапустить сервер postgresql.

EDIT2: выделенные файлы конфигурации.

Ответ 2

Имела такую же проблему с psql через соединение командной строки, и pgAdmin не подключался к RDS с AWS. У меня действительно установлен RDS для общедоступного доступа. Я убедился, что мои ACL и группы безопасности были широко открыты и все еще проблемы, поэтому я сделал следующее: sudo find. -name *.conf sudo find. -name *.conf затем sudo nano./data/pg_hba.conf затем добавлен в sudo nano./data/pg_hba.conf директив в файле pg_hba.conf host all all 0.0.0.0/0 md5 и pgAdmin автоматически запустил меня.

Это также сработало в файле pg_hba.conf host all all md5 без какого-либо IP-адреса, и это также работало с моим host all all <myip>/32 md5 IP-адреса host all all <myip>/32 md5

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

Ответ 3

Вам, вероятно, нужно открыть порт для доступа к нему в вашей локальной сети (или за его пределами) или привязать сетевой адрес к порту (заставить PostgreSQL слушать в локальной сети, а не только на локальном хосте)

Ответ 4

Не забудьте также проверить настройки брандмауэра. после проверки и двойной проверки моих файлов pg_hba.conf и postgres.conf я, наконец, узнал, что мой брандмауэр переопределяет все и, следовательно, блокирует соединения

Ответ 5

У меня была такая же проблема после обновления системы MacOS. Решил это, улучшив postgres с помощью brew. Подробности: похоже, что система пыталась получить доступ к Postgres 11, используя более старые настройки Postgres 10. Я уверен, что это была моя ошибка где-то в прошлом, но, к счастью, все вышло с вышеприведенным обновлением.

Ответ 6

Это укусило меня во второй раз, поэтому я подумал, что стоит упомянуть. Строка listen_addresses = '*' в postgresql.conf по умолчанию комментируется. Обязательно раскомментируйте (удалите знак решетки, # в начале) его после обновления, в противном случае удаленные соединения будут по-прежнему блокироваться.