Не удается подключить PostgreSQL к удаленной базе данных с помощью pgAdmin

StackOverflow https://stackoverflow.com/questions/1287067

  •  18-09-2019
  •  | 
  •  

Вопрос

Я установил PostgreSQL на свой локальный сервер (Ubuntu) с IP 192.168.1.10.Теперь я пытаюсь получить доступ к базе данных со своего клиентского компьютера (Ubuntu) с IP 192.168.1.11 с помощью pgAdmin.

Я знаю, что мне нужно внести изменения в postgresql.conf и pg_hba.conf, чтобы разрешить клиенту подключаться.Не могли бы вы, пожалуйста, направить меня?

Это было полезно?

Решение

На самом деле это трехэтапный процесс удаленного подключения к серверу PostgreSQL через pgAdmin3.

Примечание:Я использую Ubuntu 11.04 и PostgreSQL 8.4.

  1. Вам необходимо настроить PostgreSQL на прослушивание удаленных входящих TCP-соединений, поскольку настройки по умолчанию позволяют прослушивать только соединения через интерфейс обратной связи.Чтобы иметь возможность удаленного доступа к серверу, вам необходимо добавить в файл следующую строку: /etc/postgresql/8.4/main/postgresql.conf:

    прослушивание_адреса = '*'

  2. PostgreSQL по умолчанию отклоняет все соединения, которые он получает с любого удаленного адреса, вам придется ослабить эти правила, добавив эту строку в /etc/postgresql/8.4/main/pg_hba.conf:

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

    Это правило контроля доступа, которое позволяет любому войти в систему с любого адреса, если он может предоставить действительный пароль (ключевое слово md5).Вы можете использовать необходимую сеть/маску вместо 0.0.0.0/0 .

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

Другие советы

Если вы используете PostgreSQL 8 или более позднюю версию, вам может потребоваться изменить listen_addresses установка в /etc/postgresql/8.4/main/postgresql.conf.

Попробуйте добавить строку:

listen_addresses = *

который сообщит PostgreSQL прослушивать соединения на всех сетевых интерфейсах.

Если этот параметр не задан явно, по умолчанию этот параметр имеет значение localhost это означает, что он будет принимать соединения только с одной и той же машины.

Мне не нужно было менять файл prostgresql.conf, но мне пришлось сделать следующее, исходя из того, что мой psql через командную строку подключался, а pgAdmin не подключался к RDS с AWS.

У меня действительно был установлен режим RDS «Общедоступный».Я убедился, что мои списки управления доступом и группы безопасности широко открыты, но проблемы по-прежнему возникают, поэтому я сделал следующее:sudo find . -name *.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-адреса, и это также работало с моим IP-адресом host all all <myip>/32 md5

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

В терминале Linux попробуйте следующее:

  • sudo service postgresql start :чтобы запустить сервер
  • sudo service postgresql stop :остановить тебя, сервер
  • sudo service postgresql status :проверить статус сервера

Для redhat linux

sudo vi /var/lib/pgsql9/data/postgresql.conf 

pgsql9 - это папка для установленной версии postgres, для других она может отличаться

изменено listen_addresses = '*' из listen_addresses = ‘localhost’ и затем

sudo /etc/init.d/postgresql stop
sudo /etc/init.d/postgresql start

Проверьте свой брандмауэр.Когда вы его отключите, то сможете подключиться.Если вы хотите/не можете отключить брандмауэр, добавьте правило для удаленного подключения.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top