【问题标题】:SSL error in Django MySQL Connection (2026 SSL_CTX_set_tmp_dh failed)Django MySQL 连接中的 SSL 错误(2026 SSL_CTX_set_tmp_dh 失败)
【发布时间】: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> },
    }
}

}

【问题讨论】:

标签: mysql django rds


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-22
    • 2023-04-01
    • 1970-01-01
    • 2020-08-22
    • 2020-05-26
    • 1970-01-01
    • 2016-03-03
    • 2019-06-06
    相关资源
    最近更新 更多