Django MySQL连接中的SSL错误(2026 SSL_CTX_set_tmp_dh失败)

时间:2019-06-20 23:23:40

标签: mysql django rds

尝试通过settings.py文件中的数据库dict连接到RDS MySQL实例会产生django.db.utils.OperationalError:(2026,“ SSL连接错误:SSL_CTX_set_tmp_dh失败”)。

错误代码类似于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应用程序
  • 带有安全组的MySQL RDS实例允许来自所有IP地址的连接
  • 已将MySQL用户设置为允许来自任何主机的连接
  • Amazon的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的路径是绝对路径,并且是绝对路径,并确保我没有像SSL connection error when connecting to RDS MySQL from Django中那样使用python来尝试构建它。

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> },
    }
}

}

1 个答案:

答案 0 :(得分:0)

我通过使用完全相同的settings.py文件创建一个全新的Django项目并更新requirements.txt中的所有程序包来解决此问题,因此问题可能是mysqlclient,PyMySQL和MySQL 5.6之间不兼容。