首页 > 解决方案 > Amazon RDS:OperationalError:(2003,“无法连接到 rds.amazonaws.com (110) 上的 MySQL 服务器”)

问题描述

我已经使用 MySQL 数据库设置了 Amazon Relational Database Service (RDS),并尝试将其与我的 django 应用程序连接,但出现上述错误。我的数据库设置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

我知道端口是正确的,这是大多数情况下出现此类错误的解决方案。所有其他变量也是正确的。

即使它的状态可用,我也无法 ping somestagingname.somestagingid.us-east-2.rds.amazonaws.com,因此我如何设置 RDS 肯定存在问题:

在此处输入图像描述

标签: pythonmysqldjangoamazon-rds

解决方案


这似乎是一个网络问题,Django 服务器无法访问数据库,这可能发生在多种问题上:

  • 它们位于不同且未连接的 VPN 或网络中。

  • 运行 Django 的 EC2 机器的安全组不允许此出站流量到此网络端口组合。

  • RDS 中的安全组不允许来自 EC2 机器所在网络的入站流量用于 3306 端口。

如果您处于使用随 AWS 账户提供的默认网络的场景中,则可能会放弃第一个场景。此外,默认情况下,EC2 机器允许所有传出流量。

因此,我最好的建议是开始检查控制 RDS 入站流量的安全组。

欲了解更多信息:https ://docs.aws.amazon.com/en_us/AmazonRDS/latest/UserGuide/Overview.RDSSecurityGroups.html


推荐阅读