Amazon RDS: OperationalError: (2003, "Не удается подключиться к серверу MySQL на rds.amazonaws.com (110)".

Я создал базу данных MySQL и пытаюсь подключить ее к своему приложению. Но я получаю приведенную выше ошибку. Мои настройки базы данных в settings.py следующие:

DATABASES = {
'default': {
    'ENGINE': config('db_engine'),
    'NAME': config('db_name'),
    'USER': config('db_user'),
    'PASSWORD': config('db_password'),
    'HOST': config('db_host'),
    'PORT': config('db_port')
}

}

и мои переменные окружения базы данных следующие:

db_engine=django.db.backends.mysql
db_name=stagingdatabase
db_user=staginguser
db_password=stagingpassword
db_host=somestagingname.somestagingid.us-east-2.rds.amazonaws.com
db_port=3306

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

Я не могу пинговать somestagingname.somestagingid.us-east-2.rds.amazonaws.com, хотя его статус доступен, так что здесь должна быть проблема: enter image description here

Похоже, что это сетевая проблема, сервер Django не может достичь базы данных, это может произойти по разным причинам:

  • Они находятся в разных и не связанных между собой VPN или сетях.

  • Группа безопасности для машины EC2, на которой запущен Django, не разрешает этот исходящий трафик для этой комбинации сеть-порт.

  • Группа безопасности в RDS не разрешает входящий трафик из сети, где находится машина EC2, для порта 3306.

Если вы находитесь в сценарии, в котором вы используете сеть по умолчанию, предоставляемую с учетной записью AWS, то, скорее всего, первый сценарий будет отброшен. Кроме того, по умолчанию для машин EC2 разрешен весь исходящий трафик.

Итак, мое лучшее предложение - начать проверку группы безопасности, которая контролирует входящий трафик на ваш RDS.

Для получения дополнительной информации: https://docs.aws.amazon.com/en_us/AmazonRDS/latest/UserGuide/Overview.RDSSecurityGroups.html

Вернуться на верх