ошибка" psql: не удалось подключиться к серверу: отказано в подключении " при подключении к удаленной базе данных
Я пытаюсь подключиться к базе данных postgres, установленной на удаленном сервере, используя следующую команду:
psql-h host_ip
- U db_username
- d db_name
это ошибка, которая возникает:
команду psql: не удалось подключиться к серверу: подключение отказался Сервер работает на хосте "" и принимает TCP / IP соединения на порту 5432?
- установленная версия Postgres-9.4.
- Хоста операционная система: Ubuntu 15.04
- клиентская операционная система: Centos 7
Я уже пробовал следующее, Но проблема остается нерешенной:
- редактировать включить
хост все все 0.0.0.0 / 0 md5
- отредактировано ' postgresql.conf ' и изменил параметр listen на
listen_addresses='*'
- перезапущен сервис postgres.
- отключен брандмауэр и iptables на хосте и клиенте.
- я проверил, выполнив команду psql локально, и это сработало.
- я попробовал второе решение, данное в этом вопрос. Бег!--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]