Приложение не подключается к PostgreSQL
Сломай-почини · Среднее · 25 мин · 160 баллов
Приложение не подключается к PostgreSQL
Сервис app должен ходить в базу PostgreSQL (пользователь appuser, БД appdb,
подключение по TCP на 127.0.0.1:5432). Но при старте он падает с ошибкой подключения
к базе. Сам PostgreSQL запущен.
Задача
Сделай так, чтобы:
- подключение
psql -h 127.0.0.1 -U appuser -d appdbпроходило успешно; - PostgreSQL слушал нужный адрес и принимал соединение от
appuserкappdb(правило вpg_hba.conf); - служба
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-ВМ для задания — обычно пара секунд. После работы её можно остановить.