Linux Labs

Веб-стек / Ступень 7 из 9

Подключение, роль и pg_hba

Не запущена Запускается обычно ~20 с
Выйти из урока

Шаг 4 из 7 · на машине · 7 мин

Строка для shop

Добавишь shop строку доступа и применишь её, не останавливая сервер.

Узкая строка открывает ровно нужное: своя база, своя роль, один адрес и вход по паролю. Образец — строка crm. Метод trust пускает без пароля любого, кто совпал со строкой, — на сервере с данными его не ставят. Править файл — sudo vim /etc/postgresql/16/main/pg_hba.conf.

Новая строка сама ничего не меняет: сервер читает pg_hba.conf при запуске и по команде перечитать конфигурацию — sudo systemctl reload postgresql. Reload применяет правила к новым подключениям и не трогает открытые. restart останавливает сервер: соединения всех приложений обрываются.

Упражнение · сделать

Открой shop вход в его базу

Сделай так, чтобы роль shop входила в базу shop с 127.0.0.1 по паролю из ~/.pgpass — и только в неё. Сервер не перезапускай: к нему подключены другие приложения.

Войти и начать Машина доступна после входа

Цели · 0 из 3

  • Пустить shop в базу shop по паролю ещё не выполнена
  • Оставить shop без доступа к другим базам ещё не выполнена
  • Применить правила без перезапуска сервера ещё не выполнена

Опечатка в pg_hba.conf сразу не видна. systemctl reload закончится молча с кодом 0, а сервер запишет в журнал /var/log/postgresql/postgresql-16-main.log строку pg_hba.conf was not reloaded и останется на прежних правилах — целиком, без новой строки. После restart с такой опечаткой сервер не запустится вовсе. Ошибки файла показывает представление pg_hba_file_rules:

bash
sudo -u postgres psql -c 'SELECT line_number, error
  FROM pg_hba_file_rules WHERE error IS NOT NULL'

Пустой ответ — ошибок нет. Иначе — номер строки и что в ней не так.

Проверь себя 1 вопрос

Ты добавил строку для shop и сделал sudo systemctl reload postgresql — код 0. psql по-прежнему пишет no pg_hba.conf entry. С чего начнёшь?

  • До пароля дело не дошло: no pg_hba.conf entry — это этап правила. Новый пароль ответ сервера не изменит.

  • С ошибкой в pg_hba.conf сервер после restart не запустится вовсе — отказ получат все приложения. Сначала найди ошибку: pg_hba_file_rules, столбец error.

  • trust пустит без пароля любую роль в любую базу, а в файле с ошибкой сервер не применит и её: он останется на прежних правилах.

Reload с ошибкой в файле заканчивается молча, а сервер пишет в журнал pg_hba.conf was not reloaded и работает по старым правилам. pg_hba_file_rules покажет номер строки и ошибку, например invalid IP mask для адреса без /32.

Цели шага

0 из 3
  • Пустить shop в базу shop по паролю — ещё не выполнена
  • Оставить shop без доступа к другим базам — ещё не выполнена
  • Применить правила без перезапуска сервера — ещё не выполнена
Ubuntu 24.04

Цели шага

0 из 3
  • Пустить shop в базу shop по паролю — ещё не выполнена
  • Оставить shop без доступа к другим базам — ещё не выполнена
  • Применить правила без перезапуска сервера — ещё не выполнена
Загрузка…