python - 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 肯定存在问题:
解决方案
这似乎是一个网络问题,Django 服务器无法访问数据库,这可能发生在多种问题上:
它们位于不同且未连接的 VPN 或网络中。
运行 Django 的 EC2 机器的安全组不允许此出站流量到此网络端口组合。
RDS 中的安全组不允许来自 EC2 机器所在网络的入站流量用于 3306 端口。
如果您处于使用随 AWS 账户提供的默认网络的场景中,则可能会放弃第一个场景。此外,默认情况下,EC2 机器允许所有传出流量。
因此,我最好的建议是开始检查控制 RDS 入站流量的安全组。
欲了解更多信息:https ://docs.aws.amazon.com/en_us/AmazonRDS/latest/UserGuide/Overview.RDSSecurityGroups.html
推荐阅读
- flutter - 无法启动 Flutter - Flutter 运行 - Gradle 任务 assembleDebug 失败,退出代码为 1
- php - 如何删除数组中的重复数据?
- java - 创建 Pod 集群时出现 ApiException
- r - r ggplot2 x 轴的测序日期 (mm/dd)
- javascript - 在 URL 中动态存储查询参数的最佳方法是什么?
- python - 如果数字完全除,则将商设为整数
- r - 在 R 中使用 ts() 函数
- python - 删除另一个数组中包含的一维数组中的值
- flutter - 从 OutlineInputBorder 中删除特定的边框边
- java - 如何在neatbeans中创建一个maven项目的jar文件