【发布时间】:2019-11-03 19:23:15
【问题描述】:
尝试通过 settings.py 文件中的数据库 dict 连接到 RDS MySQL 实例会产生 django.db.utils.OperationalError: (2026, 'SSL connection error: SSL_CTX_set_tmp_dh failed')。
错误代码类似于django.db.utils.OperationalError: (2026, 'SSL connection error: SSL_CTX_set_tmp_dh failed'),所以我尝试使用 bin/mysql_ssl_rsa_setup 创建默认的 SSL 和 RSA 文件。
设置(类似于SSL connection error when connecting to RDS MySQL from Django)
- 标准 Django 应用程序
- 具有允许来自所有 IP 地址的连接的安全组的 MySQL RDS 实例
- MySQL 用户设置为允许来自任何主机的连接
- 亚马逊的 pem 已下载并在 Django 设置中指定
通过 cli 连接有效,通过 PyMySql 在解释器中连接也是如此。
成功的PyMySql连接和查询如下所示:
db = pymysql.connect(user=os.environ['DEV_DATABASE_USERNAME'],
password=os.environ['DEV_MYSQL_PASSWORD'],
host=os.environ['DEV_DATABASE_HOST'],
cursorclass=pymysql.cursors.DictCursor,
database='dev'),
ssl={'ssl':{'ca':<PATH TO CA CERT>}})
我已经尝试验证到 ca 的路径是绝对的,确实如此,并确保我没有使用 python 来尝试构建它,如 SSL connection error when connecting to RDS MySQL from Django。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'dev',
'USER': os.environ['DEV_DATABASE_USERNAME'],
'HOST': os.environ['DEV_DATABASE_HOST'],
'PASSWORD': os.environ['DEV_MYSQL_PASSWORD'],
'OPTIONS': {
'ssl': { 'ca': <PATH TO CA CERT> },
}
}
}
【问题讨论】:
-
错误代码与stackoverflow.com/questions/53385113/…中的相同,但我已经尝试了该帖子中的解决方案,但没有成功。