У меня возникли проблемы с подключением к базе данных PostgreSQL из онлайн-источника.
PostgreSQL, похоже, настроен нормально, он работает на порту по умолчанию 5432, а в postgresql.conf есть следующая строка:
listen_addresses = '*'
А в pg_hba.conf есть следующее
host dbname usname all md5
Я могу подключиться к базе данных PostgreSQL с другого компьютера, используя следующие учетные данные в pgadmin
Name local
Host 192.xx.xx.xx
Port 5432
Maintenance DB dbname
Username usname
Password psword
Используя их, я могу отлично подключиться, все работает нормально.
Затем я перенаправил порт 192.xx.xx.xx:5432 на маршрутизаторе ADSL и проверил его, используя публичный IP-адрес 197.xx.xx.xx (видимый для IP-адреса в Интернете) http://www.canyouseeme.org/ Где я вижу, что порт был перенаправлен нормально.
Я временно отключил SELinux и брандмауэр.
Однако когда я пытаюсь подключиться с помощью
Name online
Host 197.xx.xx.xx
Port 5432
Maintenance DB dbname
Username usname
Password psword
Я получаю сообщение об ошибке «Сервер не слушает»
could not connect to server: Connection refused (0x0000274D/10061) Is the server running on host "197.xx.xx.xx" and accepting TCP/IP connections on port 5432?
Почему так? Нужно ли мне добавить дополнительный шаг, чтобы он принимал соединения через переадресацию портов?
решение1
all
недопустимо в поле CIDR строки host
в pg_hba.conf
.
Из комментариев в pg_hba.conf
самом файле по умолчанию:
# хост БАЗЫ ДАННЫХ ПОЛЬЗОВАТЕЛЯ CIDR-АДРЕС МЕТОД [ОПЦИЯ]
и
CIDR-ADDRESS указывает набор хостов, с которыми совпадает запись. Он состоит из IP-адреса и маски CIDR, которая является целым числом (от 0 до 32 (IPv4) или 128 (IPv6) включительно), которое указывает количество значимых бит в маске. В качестве альтернативы вы можете написать IP-адрес и сетевую маску в отдельных столбцах, чтобы указать набор хостов.
Попробуйте вместо этого следующее:
host dbname usname 197.xx.xx.xx/32 md5
что позволит подключаться к dbname из usname только с удаленного хоста 197.xx.xx.xx
Если вы хотите разрешить всю подсеть 197.xx.xx /24, используйте:
host dbname usname 197.xx.xx.0/24 md5