linux-labs

← Практика

Приложение не подключается к PostgreSQL

Сломай-почини · Среднее · 25 мин · 160 баллов

Приложение не подключается к PostgreSQL

Сервис app должен ходить в базу PostgreSQL (пользователь appuser, БД appdb, подключение по TCP на 127.0.0.1:5432). Но при старте он падает с ошибкой подключения к базе. Сам PostgreSQL запущен.

Задача

Сделай так, чтобы:

  1. подключение psql -h 127.0.0.1 -U appuser -d appdb проходило успешно;
  2. PostgreSQL слушал нужный адрес и принимал соединение от appuser к appdb (правило в pg_hba.conf);
  3. служба app подключалась к базе без ошибок.

Подсказки по подходу

  • Слушает ли база TCP: sudo ss -ltnp | grep 5432. Если только unix-сокет — смотри listen_addresses в postgresql.conf.
  • Кого и как пускает база, решает pg_hba.conf (правила host/user/database/метод). Пути к файлам: sudo -u postgres psql -c 'SHOW hba_file; SHOW config_file;'.
  • После правки *.conf нужен reload: sudo systemctl reload postgresql (или SELECT pg_reload_conf();).
  • Точная причина почти всегда в логе: journalctl -u postgresql или /var/log/postgresql/.

Всё нужное уже установлено. Интернет на машине отсутствует — и не понадобится.

Подсказки

Подсказка 1

Воспроизведи ошибку руками: psql -h 127.0.0.1 -U appuser -d appdb. Текст ошибки («no pg_hba.conf entry», «could not connect», «password authentication failed») сразу сузит причину.

Подсказка 2

Если «could not connect» — база не слушает TCP: проверь listen_addresses в postgresql.conf (нужно хотя бы localhost) и ss -ltnp | grep 5432. Если «no pg_hba.conf entry» — нет разрешающего правила для appuser/appdb/адреса.

Подсказка 3

Поправь нужный файл (путь покажет SHOW hba_file/config_file): добавь строку вида host appdb appuser 127.0.0.1/32 scram-sha-256 и/или включи listen_addresses. Перечитай конфиг sudo systemctl reload postgresql и снова проверь psql.

Поднимет вашу личную эфемерную Linux-ВМ для задания — обычно пара секунд. После работы её можно остановить.