Не удается подключиться к 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 по умолчанию комментируется. Обязательно раскомментируйте (удалите знак решетки, # в начале) его после обновления, в противном случае удаленные соединения будут по-прежнему блокироваться.