Когда managed database не принимает соединения из приложения, ошибка может быть в сети, правилах доступа, SSL, учетной записи, DNS, лимитах подключений или настройках самого приложения. Внешне это выглядит одинаково: timeout, connection refused или authentication failed.

Начните с разделения проблемы: приложение не доходит до базы по сети, база отклоняет подключение или подключение проходит, но ломается на уровне SSL и прав.

Коротко: что делать

  • Зафиксировать точный текст ошибки подключения
  • Проверить, доступна ли база с того же сервера, где работает приложение
  • Проверить security group, firewall, allowlist IP и VPC/subnet
  • Проверить host, port, database name, пользователя и пароль
  • Проверить SSL-режим и сертификаты, если managed database требует защищенное соединение

Основные причины

У этой проблемы редко бывает одна универсальная причина. Обычно нужно проверить связку настроек, данных, кода и внешних сервисов, а потом уже выбирать способ исправления.

  • IP приложения не добавлен в allowlist или security group
  • Приложение находится в другой сети, VPC или subnet без маршрута к базе
  • Подключение идет на public endpoint вместо private endpoint или наоборот
  • SSL включен в базе, но приложение подключается без правильного режима
  • Пользователь базы не имеет прав или достигнут лимит соединений

Пошаговая диагностика

Диагностику лучше вести от конкретного примера: один пользователь, один запрос, один документ, одно событие или один экран. Так проще увидеть точку, где система начинает вести себя неправильно.

  • Проверить подключение утилитой psql/mysql с сервера приложения
  • Сравнить endpoint базы в панели облака и в env приложения
  • Проверить входящие правила security group и исходящие правила приложения
  • Посмотреть логи managed database по отказам и лимитам
  • Проверить DNS-резолвинг endpoint внутри нужной сети

Как исправить проблему

Исправление должно закрывать корневую причину, а не только внешний симптом. Если проблема связана с доступами, платежами, данными или безопасностью, сначала стоит сделать резервную копию и проверить правку на тестовом сценарии.

  • Добавить правильный IP, subnet или security group в разрешенные источники
  • Исправить endpoint, port и SSL-параметры в env приложения
  • Настроить private network, peering или NAT, если база закрыта от интернета
  • Создать отдельного пользователя с минимально нужными правами
  • Настроить connection pool, если приложение открывает слишком много соединений

Безопасный план решения

Сначала проверьте подключение вручную с сервера приложения, затем меняйте сетевые правила минимально: открывайте доступ только нужному источнику и только к нужному порту.

Чего не стоит делать

  • Не открывать базу на весь интернет ради быстрой проверки
  • Не отключать SSL в production без понимания рисков
  • Не использовать root/admin пользователя приложения
  • Не менять пароль в базе, не обновив секреты приложения

Что подготовить перед исправлением

  • Текст ошибки подключения
  • Облачный провайдер и тип базы
  • Endpoint базы и регион без паролей
  • Где запущено приложение: VM, Kubernetes, serverless или другой сервис
  • Сетевые правила или скрин security group

FAQ

Почему локально подключается, а на сервере нет?

У локального компьютера и сервера разные IP, сети и правила доступа. Managed database может разрешать один источник и блокировать другой.

Что означает timeout?

Чаще всего приложение не доходит до базы по сети: firewall, route, security group, allowlist или неверный endpoint.

Что означает authentication failed?

Сеть уже работает, но неверны пользователь, пароль, база, способ авторизации или права.

Когда стоит обратиться за помощью

Обратиться за помощью стоит, если база обслуживает рабочий сайт, CRM, платежи или приложение, а изменение сетевых правил может задеть безопасность.

Итог

Начните с ручного подключения с сервера приложения и проверки сетевых правил. Если нужно аккуратно настроить managed database, VPC, SSL и подключение приложения, можно написать в Telegram @rabotator_support.