Настройка файла pg_hba.conf для разрешения доступа с других серверов к базе данных.

15

У меня есть база данных postgres на одном сервере, и мне нужен доступ к ней с другого сервера.

Мне нужно отредактировать файл pg_hba.conf, но теперь я понимаю, каковы действия по редактированию этого файла. Сервер Centos

Мне нужно добавить следующую строку в файл

host    all         all         10.0.2.12         255.255.255.255   trust

Я нашел это в var/lib/pgsql/data/

Теперь, в принципе, я не уверен, как правильно сделать это

Elitmiar
источник

Ответы:

14

Сначала возьмите резервную копию данного pg_hba.conf

sudo tar cvf /var/tmp/mybackup_pg_hba_conf.tar /var/lib/pgsql/data/pg_hba.conf

Таким образом, у вас есть готовая старая версия, если вы облажаетесь. Приятной особенностью архива tar является то, что он сохраняет права доступа и каталоги. Так что когда pg_hba.conf не работает до неузнаваемости. Вы можете:

cd /
sudo tar xvf /var/tmp/mybackup_pg_hba_conf.tar

Это восстановит резервную копию pg_hba.conf из архива, который вы создали ранее.

Что касается фактической вставки строки:

sudo su -c 'echo "host    all         all         10.0.2.12         255.255.255.255   trust" >> /var/lib/pgsql/data/pg_hba.conf'

(ПРИМЕЧАНИЕ: команда отредактирована. Спасибо bortzmeyer!)

Должен сделать это. Обратите внимание, что это просто добавляет строку в pg_hba.conf. Если вам когда-либо понадобится изменить его, вы должны использовать настоящий редактор. Как и vi. Эта кривая обучения может быть немного крутой, но после того, как вы изучите хотя бы основы, вы должны быть совершенно безопасны в большинстве любых unix-сред, с которыми вы сталкиваетесь.

Теперь, когда я вернулся на путь, вам следует попытаться перезапустить базу данных postgresql. Я считаю, что на машине Centos это делается:

sudo service postgresql restart

или вы можете просто перезагрузить конфигурацию без перезагрузки:

su - postgres
pg_ctl reload

Теперь у вас должна быть возможность доступа к базе данных Centos-machines postrgresql с 10.0.2.12.

Пайхимис
источник
1
Sudo в последней команде не будет работать, так как привилегированная операция выполняется перенаправлением, которое обрабатывается оболочкой, а не программой, которую вы запускаете с помощью sudo (в данном случае echo).
Бортцмейер
Хорошая точка зрения! Он должен быть записан как sudo "echo" host all all 10.0.2.12 255.255.255.255 trust '>> /var/lib/pgsql/data/pg_hba.conf "
pyhimys
Идеальным способом было бы поставить его под контроль версий в месте администратора и развернуть его после изменения через SSH и т. Д.
vfclists
1
Расположение файла pg_hba.conf по умолчанию немного отличается в 9.4: /var/lib/pgsql/9.4/data/pg_hba.conf.
Сергей Власов
13

Не забудьте отредактировать postgresql.conf и изменить / добавить строку

listen_addresses = '*'

Postgresql по умолчанию прослушивает localhost

user16233
источник
Разве ваш пример list_addresses не слишком разрешающий? Это зияющая дыра в безопасности, если сервер работает на нескольких IP-адресах, то есть общедоступных, внутренних, VPN и т. Д.
vfclists