Что такое ошибка Connection Refused?

Ошибка Connection Refused в PostgreSQL означает, что клиент не может подключиться к серверу базы данных.

Причины возникновения

  • PostgreSQL сервер не запущен
  • Неправильный порт или адрес
  • Проблемы с файрволом
  • Неправильная конфигурация pg_hba.conf
  • Проблемы с сетевым подключением

Как отладить ошибку

  1. Проверь статус PostgreSQL - убедись, что сервер запущен
  2. Проверь порт и адрес - убедись в правильности настроек
  3. Проверь файрвол - убедись в открытости порта
  4. Проверь pg_hba.conf - убедись в правильности настроек аутентификации

Как исправить ошибку

1. Запусти PostgreSQL сервер

 1# На Ubuntu/Debian
 2sudo systemctl start postgresql
 3sudo systemctl status postgresql
 4
 5# На CentOS/RHEL
 6sudo systemctl start postgresql
 7sudo systemctl status postgresql
 8
 9# Проверь процессы
10ps aux | grep postgres

2. Проверь конфигурацию подключения

1# Проверь postgresql.conf
2sudo -u postgres psql -c "SHOW listen_addresses;"
3sudo -u postgres psql -c "SHOW port;"
4
5# Настрой listen_addresses
6# В postgresql.conf:
7listen_addresses = '*'  # или конкретные IP
8port = 5432

3. Настрой pg_hba.conf

1# Добавь строки в pg_hba.conf
2# TYPE  DATABASE        USER            ADDRESS                 METHOD
3local   all             all                                     trust
4host    all             all             127.0.0.1/32            md5
5host    all             all             ::1/128                 md5
6host    all             all             0.0.0.0/0               md5

4. Проверь файрвол

1# Ubuntu/Debian
2sudo ufw allow 5432/tcp
3
4# CentOS/RHEL
5sudo firewall-cmd --permanent --add-port=5432/tcp
6sudo firewall-cmd --reload
7
8# Проверь открытые порты
9sudo netstat -tlnp | grep 5432

Как мониторить подобные ошибки

  • Настрой мониторинг статуса PostgreSQL
  • Используй health checks для проверки подключения
  • Логируй ошибки подключения
  • Настрой алерты на недоступность БД

FAQ

В: Как проверить, что PostgreSQL слушает на нужном порту?

О: Используй netstat -tlnp | grep 5432 или ss -tlnp | grep 5432.

В: Что делать, если подключение работает локально, но не удаленно?

О: Проверь файрвол, настройки pg_hba.conf и listen_addresses в postgresql.conf.

В: Как настроить SSL подключение?

О: Настрой ssl = on в postgresql.conf и создай сертификаты.

Лучшие практики

  • Всегда используй пароли для подключений
  • Ограничивай доступ по IP адресам
  • Используй SSL для защищенных подключений
  • Мониторь подключения к БД
  • Настрой backup и recovery процедуры