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

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

psql-h host_ip - U db_username - d db_name

это ошибка, которая возникает:

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

  1. установленная версия Postgres-9.4.
  2. Хоста операционная система: Ubuntu 15.04
  3. клиентская операционная система: Centos 7

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

  1. редактировать включить

хост все все 0.0.0.0 / 0 md5

  1. отредактировано ' postgresql.conf ' и изменил параметр listen на

listen_addresses='*'

  1. перезапущен сервис postgres.
  2. отключен брандмауэр и iptables на хосте и клиенте.
  3. я проверил, выполнив команду psql локально, и это сработало.
  4. я попробовал второе решение, данное в этом вопрос. Бег!--4--> дал мне следующий результат:

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

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

6 ответов


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

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


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

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

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

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

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

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


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


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

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

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

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

host all all all md5

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

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

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]