Подтвердить что ты не робот

Msgstr "Не удалось подключиться к серверу: Соединение отказало" Ошибка при подключении к удаленной базе данных

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

psql -h host_ip -U db_username -d db_name

Эта ошибка:

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

  • Установленная версия Postgres - 9.4.
  • Операционная система хоста: Ubuntu 15.04
  • Клиентская операционная система: Centos 7

Я уже пробовал следующее, но проблема остается нерешенной:

  • Отредактированный файл pg_hba.conf для включения

host all all 0.0.0.0/0 md5

  1. Отредактировано 'postgresql.conf' и изменил параметр прослушивания на

listen_addresses = '*'

  1. Перезапуск службы postgres.
  2. Отключен брандмауэр и iptables на хосте и клиенте.
  3. Я проверил, выполнив команду psql локально, и он сработал.
  4. Я попробовал второе решение, данное в этом question. Запуск nmap дал мне следующий результат:

Starting Nmap 6.47 ( http://nmap.org ) at 2015-09-07 18:08 IST Nmap scan report for 10.17.250.250 Host is up (0.0000040s latency). Not shown: 997 closed ports PORT STATE SERVICE 22/tcp open ssh 25/tcp open smtp 80/tcp open http

Я что-то упускаю. Надеюсь, кто-то может помочь.

4b9b3361

Ответ 1

cd /etc/postgresql/9.x/main/

открыть файл с именем postgresql.conf

sudo vi postgresql.conf

добавить эту строку в этот файл

listen_addresses = '*'

затем откройте файл с именем pg_hba.conf

sudo vi pg_hba.conf

и добавьте эту строку в этот файл

host  all  all 0.0.0.0/0 md5

Он обеспечивает доступ ко всем базам данных для всех пользователей с зашифрованным паролем

перезагрузите сервер

sudo /etc/init.d/postgresql restart

Ответ 2

Проверьте порт, определенный в postgresql.conf. Моя установка postgres 9.4 использует порт 5433 вместо 5432

Ответ 3

Я боролся с этим, пытаясь удаленно подключиться к новой установке PostgreSQL на моем Raspberry Pi. Вот полное описание того, что я сделал, чтобы решить эту проблему:

Сначала откройте файл конфигурации PostgreSQL и убедитесь, что служба будет прослушивать вне localhost.

sudo [editor] /etc/postgresql/[version]/main/postgresql.conf

Я использовал nano, но вы можете использовать редактор по вашему выбору, и, хотя у меня установлена версия 9.1, этот каталог будет для любой установленной вами версии.

Выполните поиск в разделе "Соединения и аутентификация". Первый параметр должен быть 'listen_addresses' и может выглядеть следующим образом:

#listen_addresses = 'localhost'     # what IP address(es) to listen on;

Комментарии справа дают хорошие инструкции о том, как изменить это поле, и использование предложенного '*' для всех будет работать хорошо.

Обратите внимание, что это поле закомментировано С#. Согласно комментариям, по умолчанию будет установлено значение "localhost", поэтому просто изменить значение на '*' недостаточно, вам также необходимо раскомментировать настройку, удалив ведущую #.

Теперь это должно выглядеть так:

listen_addresses = '*'         # what IP address(es) to listen on;

Вы также можете проверить следующую настройку "порт", чтобы убедиться, что вы подключаетесь правильно. 5432 - это значение по умолчанию, и это порт, к которому psql попытается подключиться, если вы его не укажете.

Сохраните и закройте файл, затем откройте файл конфигурации Client Authentication, который находится в том же каталоге:

sudo [editor] /etc/postgresql/[version]/main/pg_hba.conf

Я рекомендую прочитать файл, если вы хотите ограничить доступ, но для простых открытых подключений вы перейдете в конец файла и добавите следующую строку:

host all all all md5

Вы можете нажать табуляцию вместо пробела, чтобы выровнять поля с существующими столбцами, если хотите.

Лично я вместо этого добавил строку, которая выглядела так:

host [database_name] pi 192.168.1.0/24 md5

Это ограничивает подключение только одним пользователем и только одной базой данных в подсети локальной сети.

После сохранения изменений в файле вам нужно будет перезапустить службу, чтобы применить изменения.

sudo service postgresql restart

Теперь вы можете проверить, что служба открыто прослушивает правильный порт, используя следующую команду:

sudo netstat -ltpn

Если вы не запускаете его с повышенными правами (используя sudo), он не сообщает вам имена процессов, прослушивающих эти порты.

Одним из процессов должен быть Postgres, а локальный адрес должен быть открытым (0.0.0.0) и не ограничиваться только локальным трафиком (127.0.0.1). Если он не открыт, вам нужно будет дважды проверить файлы конфигурации и перезапустить службу. Вы можете снова подтвердить, что служба прослушивает правильный порт (по умолчанию 5432, но ваша конфигурация может отличаться).

Наконец, вы сможете успешно подключиться с удаленного компьютера с помощью команды:

psql -h [server ip address] -p [port number, optional if 5432] -U [postgres user name] [database name]

Ответ 4

Убедитесь, что настройки правильно установлены в конфигурационном файле.

vim /etc/postgresql/x.x/main/postgresql.conf

Попробуйте следующее, чтобы просмотреть журналы и найти свою проблему.

tail /var/log/postgresql/postgresql-x.x-main.log

Ответ 5

Я думаю, что вы используете машинное имя вместо ip хоста.

У меня такая же ошибка, когда я попытался с именем машины. Потому что он разрешен только тогда, когда и клиент, и хост находятся в одной сети, и у них установлена ​​одна и та же операционная система.

Ответ 6

В моем случае я не изменил политику безопасности azure по умолчанию на портале управления. Оригиналу разрешен порт 22, а остальным отказано. Пока я добавляю порт 5432, все становится хорошо.

Ответ 7

На макосе Мохаве мне помогло следующее:

$sudo mv /usr/local/var/postgres /usr/local/var/postgres.save
$brew uninstall postgres
$brew install postgres

Ответ 8

У меня была точно такая же проблема с правильными файлами конфигурации. В моем случае проблема связана с Wi-Fi Eduroam, который я использовал: когда я подключаюсь через другой Wi-Fi, все работает. Кажется, что Eduroam блокирует порт 5432, по крайней мере, в моем университете.

Ответ 9

Мой был довольно прост, если вы на Mac, попробуйте:

brew install postgres

Это скажет вам, если он уже установлен, и какую версию или установите последнюю версию для вас, если нет, тогда запустите

brew upgrade postgresql

Это гарантирует, что у вас установлена последняя версия, а затем, наконец,

brew services start postgresql

Это снова запустит службу. Я надеюсь, что это поможет кому-то.

Ответ 10

Посмотрите порт и внесите изменения в порт postgresql.conf. Моя установка postgres 9.4 использует порт 5431 или 5434 вместо 5432. Если говорят, что порт используется, измените порт. И проверьте, если вы даете пароль в установке psql, поэтому введите пароль в файл и сохраните его.