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

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

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

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

4b9b3361

Ответ 1

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

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

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

    listen_addresses = '*'

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

    host all all 0.0.0.0/0 md5

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

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

Ответ 2

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

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

listen_addresses = *

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

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

Ответ 3

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

У меня был установлен RDS для общедоступного доступа. Я убедился, что мои ACL и группы безопасности были широко открыты и все еще проблемы, поэтому я сделал следующее: 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 по умолчанию, и я не мог заставить его работать. Не знаю почему, но, что на другой день.

Ответ 4

В терминале Linux попробуйте это:

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

Ответ 5

Для 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

Ответ 6

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