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, хотя его статус доступен, так что здесь должна быть проблема:
Похоже, что это сетевая проблема, сервер Django не может достичь базы данных, это может произойти по разным причинам:
Они находятся в разных и не связанных между собой VPN или сетях.
Группа безопасности для машины EC2, на которой запущен Django, не разрешает этот исходящий трафик для этой комбинации сеть-порт.
Группа безопасности в RDS не разрешает входящий трафик из сети, где находится машина EC2, для порта 3306.
Если вы находитесь в сценарии, в котором вы используете сеть по умолчанию, предоставляемую с учетной записью AWS, то, скорее всего, первый сценарий будет отброшен. Кроме того, по умолчанию для машин EC2 разрешен весь исходящий трафик.
Итак, мое лучшее предложение - начать проверку группы безопасности, которая контролирует входящий трафик на ваш RDS.
Для получения дополнительной информации: https://docs.aws.amazon.com/en_us/AmazonRDS/latest/UserGuide/Overview.RDSSecurityGroups.html