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


15

У мене є база даних postgres на одному сервері, і мені потрібен доступ до неї з іншого сервера.

Мені потрібно відредагувати файл pg_hba.conf, але тепер я маю уявлення, які кроки є для редагування цього файлу. Серверні центри

Мені потрібно додати наступний рядок у файл

host    all         all         10.0.2.12         255.255.255.255   trust

Я розмістив його в var/lib/pgsql/data/

Зараз я в основному не впевнений, які правильні кроки для цього зробити

Відповіді:


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

Тепер ви маєте змогу отримати доступ до своєї бази даних postrgresql Centos з 10.0.2.12


1
Судо в останній команді не буде працювати, оскільки привілейована операція виконується перенаправленням, яке обробляється оболонкою, а не програмою, яку ви запускаєте з sudo (в даному випадку відлуння).
борцмейєр

Гарна думка! Це слід записати як sudo "echo 'host all all 10.0.2.12 255.255.255.255 trust' >>
/var/lib/pgsql/data/pg_hba.conf

Ідеальним способом було б поставити його під контроль версій у адміністративному місці та розгорнути після зміни його через SSH тощо
vfclists

1
Розташування файлу pg_hba.conf за замовчуванням дещо інше в 9.4: /var/lib/pgsql/9.4/data/pg_hba.conf.
Сергій Власов

13

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

listen_addresses = '*'

Postgresql прослуховує за замовчуванням у localhost


Чи не ваш приклад list_addresses занадто дозвільний? Це отвір в безпеці, якщо сервер працює на декількох IP-
адресах
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.