Как настроить PostgreSQL для приема всех входящих подключений

106

У меня есть база данных PostgreSQL, которую я бы хотел настроить для приема всех входящих соединений независимо от исходного IP-адреса. Как это можно настроить в файле pg_hba.conf? Я использую postgreSQL версии 8.4.

Фергал
источник

Ответы:

216

Просто используйте 0.0.0.0/0.

host    all             all             0.0.0.0/0            md5

Убедитесь, что listen_addressesin postgresql.conf(или ALTER SYSTEM SET) разрешает входящие соединения на всех доступных IP-интерфейсах.

listen_addresses = '*'

После внесения изменений вам необходимо перезагрузить конфигурацию. Один из способов сделать это - выполнить это SELECTкак суперпользователь.

SELECT pg_reload_conf();
Фрэнк Хайкенс
источник
это действительно работает с типом md5? Я подумал, что будет необходимо использовать шрифт trust...
Дэн ЛаРок
5
«Trust» позволяет всем пользователям подключаться без пароля. Это то, что я бы не стал использовать, пароль - это минимум, который вы всегда должны использовать. Даже на вашем собственном компьютере.
Frank Heikens,
1
ах, я прочитал вопрос по-другому - я думал, что он имел в виду безоговорочно принимать соединения от всех клиентов (возможно, для какой-то неважной тестовой площадки). я вижу, к чему вы сейчас клоните.
Дэн ЛаРок,
6
ПРИМЕЧАНИЕ . Если ваша сеть - IPv6, вам нужно использовать ::/0вместо этого 0.0.0.0/0при изменении файла pg_hba.conf.
Арон Бойетт
2
Убедитесь, что postgresу вас надежный пароль: sudo -u postgres psql, \password.
Adobe,
47

0.0.0.0/0 для всех адресов IPv4

::0/0 для всех адресов IPv6

all соответствовать любому IP-адресу

samehost для соответствия любому из собственных IP-адресов сервера

samenet для соответствия любому адресу в любой подсети, к которой напрямую подключен сервер.

например

host    all             all             0.0.0.0/0            md5
Оуэн Полинг
источник
6

В дополнение к приведенным выше отличным ответам, если вы хотите, чтобы был авторизован некоторый диапазон IP-адресов, вы можете отредактировать /var/lib/pgsql/{VERSION}/dataфайл и поместить что-то вроде

host all all 172.0.0.0/8 trust

Он будет принимать входящие соединения от любого хоста из указанного выше диапазона. Источник: http://www.linuxtopia.org/online_books/database_guides/Practical_PostgreSQL_database/c15679_002.htm

vvs14
источник
Спасибо за подсказку о диапазоне!
leole
0

Конфигурация всех файлов с помощью postgres 12 на centos:

шаг 1: поиск и редактирование файла

sudo vi /var/lib/pgsql/12/data/pg_hba.conf

нажмите «i» и в строке измените IPv4

host    all             all             0.0.0.0/0            md5

шаг 2: поиск и редактирование файла postgresql.conf

sudo vi /var/lib/pgsql/12/data/postgresql.conf

добавить последнюю строку: listen_addresses = '*': wq! (сохранить файл) - шаг 3: перезапустить

systemctl restart postgresql-12.service
trithucsv
источник
-6

Добавьте эту строку в pg_hba.conf папки postgres

host    all    all    all    trust

«Trust» позволяет всем пользователям подключаться без пароля.

Гость
источник
Не могли бы вы добавить комментарий к коду? Куда поставить и как работает?
Алистра
4
Хотя этот фрагмент кода приветствуется и может оказать некоторую помощь, его можно было бы значительно улучшить, если бы он включал объяснение того, как и почему это решает проблему. Помните, что вы отвечаете на вопрос для будущих читателей, а не только для человека, который задает его сейчас! Пожалуйста , измените свой ответ , чтобы добавить объяснение, и дать указание о том , что применять ограничения и допущения.
Тоби Спейт
разрешить соединения со всех IP-адресов действительно небезопасно
sandes