Начальная проблема
Я пытаюсь удаленно подключиться к моей базе данных pgsql, но когда я делаю
psql -h 192.168.0.121 -p 5432 my_pgsql_admin_username -d my_database
(192.168.0.121 - адрес компьютера, на котором размещена база данных pgsql), я получил типичную ошибку:
psql: could not connect do server: Connection refused
Is the server running on host "192.168.0.121" and accepting
TCP/IP connections on port 5432 ?
Моя конфигурация
Мой /etc/postgresql/9.5/main/postgresql.conf
уже содержит listen_adresses = '*'
.
Мой /etc/postgresql/9.5/main/pg_hba.conf
содержит следующие правила:
local all postgres peer
local all all peer
host all all 127.0.0.1/32 md5
host all all 192.168.0.0/24 md5
host all all ::1/128 md5
A sudo iptables -L
дает мне:
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere 192.168.0.121 tcp spts:1024:65535 dpt:postgresql state NEW,ESTABLISHED
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- 192.168.0.121 anywhere tcp spt:postgresql dpts:1024:65535 state ESTABLISHED
Я уже перезапустил свой postgresql (sudo service postgresql restart
) и свои iptables (/etc/init.d/networking restart
). Я также попытался заменить md5
на trust
в моем pg_hba.conf
, не видя никаких изменений.
Странное поведение
В моем postgresql.conf
, если я не установил listen_adresses
, я не могу подключиться удаленно, но, по крайней мере, я могу подключиться локально (с помощью простого psql
), но если я установлю переменную listen_adresses
к чему-либо (может быть, '*'
или 'localhost'
), тогда я все равно не смогу подключиться удаленно, но я даже не смогу подключиться локально.
Вопрос
Что здесь не так? Это странная ошибка или я просто что-то пропустил в конфигурации?
Технические характеристики системы:
- Ubuntu 16.04.1 в виртуальном боксе
- PostGreSQL 9,5