Назад | Перейти на главную страницу

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

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

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

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

host    all         all         10.0.2.12         255.255.255.255   trust

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

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

Сначала сделайте резервную копию данного 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

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

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

listen_addresses = '*'

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