2016-06-03 6 views
1

Я не понимаю документацию pg_hba.conf.Как разрешить соединения Postgresql из любого места?

кажется, что я мог бы добавить эту запись:

host all all     md5 

или эту запись

host all all  *.*.*.*/* md5 

, чтобы разрешить доступ из любой точки мира.

Но не только я не могу подключиться к локальной базе данных с помощью моего VirtualBox гостя IP из 10.0.2.15 ни с одной из этих линий, если у меня нет

host all all  127.0.0.1/32 md5 

, то я больше не могу подключиться даже используя 0.0.0.0 и 127.0.0.1

Какую линию мне нужно добавить, чтобы разрешить доступ с любого IP (в том числе внутри Docker контейнеров в моем VirtualBox) с использованием аутентификации по паролю?

Вот мой текущий, стандартный, hb_pga.conf файл:

local all    postgres        peer 
local all    all          peer 
host all    all   127.0.0.1/32    md5 
host all    all    ::1/128     md5 
+0

Я вижу, что 0.0.0.0/0 работает. Но почему? И почему не работают вышеперечисленные? – Richard

+0

Может показаться глупым вопросом, но какое сообщение об ошибке вы получаете, когда пытаетесь войти? –

+0

Что-то о pg_hba.conf не разрешает этот адрес – Richard

ответ

3

(Все ниже, основана на documentation for Postgres 9.5, но я не в курсе каких-либо серьезных изменений для этого синтаксиса, поэтому он должен применить к чему-либо неопределенно недавно.)

насколько я знаю, линия

host all all     md5 

не является действительным синтаксисом. При использовании типа host записи, следующие форматы доступны

host  database user address    auth-method [auth-options] 
host  database user IP-address IP-mask auth-method [auth-options] 

так как минимум из четырех дополнительных аргументов, в то время как вы только при условии, три.

В соответствии с Вашим комментарием, линия

host all all 0.0.0.0/0 md5 

будет работать, чтобы разрешить соединения от всех IP-адреса (с учетом последующей проверки подлинности пароля). /0 - это маска, для которой биты (буквально биты) IP-адреса проверяются. /0 означает, что вы хотите игнорировать все это, т. Е. разрешить все адреса. Маска 1.2.3.4/0 будет означать то же самое. Обычно не рекомендуется использовать доступ из любого места, но если вы имеете дело с внешними виртуальными машинами или контейнерами Docker, тогда это нормально.

Если вы используете IPv6 соединения, синтаксис очень похож:

host all all ::/0 md5 

Для чего это стоит, я никогда не сталкивался с синтаксисом

host all all  *.*.*.*/* md5 
+0

Возможно, вам также понадобится добавить запись для соединений IPv6 –

+0

Хорошая точка, спасибо. Измененный. – iainn

+0

Существует только опасность для публичных баз данных, если у кого-то есть ваш пароль, верно? Пока это суперсекрет, тогда они ничего не могут сделать, даже если вы разрешаете какие-либо соединения? – Richard

Смежные вопросы