Не удалось подключить PostgreSQL к удаленной базе данных с помощью pgAdmin
Я установил PostgreSQL на свой локальный сервер (Ubuntu) с IP 192.168.1.10. Теперь я пытаюсь получить доступ к базе данных с моей клиентской машины (Ubuntu) с IP 192.168.1.11 с помощью pgAdmin.
Я знаю, что мне нужно внести изменения в postgresql.conf и pg_hba.conf, чтобы клиент мог подключиться. Не могли бы вы направить меня?
Ответы
Ответ 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
Проверьте свой брандмауэр. Когда вы отключите его, то вы можете подключиться. Если вы хотите/не можете отключить брандмауэр, добавьте правило для удаленного подключения.