从Django连接到RDS MySQL时出现SSL连接错误
我正在尝试在Heroku上部署一个Django应用程序,并使用RDS实例作为数据库后端。在我尝试加密连接之前,一切正常,然后出现以下错误:从Django连接到RDS MySQL时出现SSL连接错误,mysql,django,ssl,heroku,amazon-rds,Mysql,Django,Ssl,Heroku,Amazon Rds,我正在尝试在Heroku上部署一个Django应用程序,并使用RDS实例作为数据库后端。在我尝试加密连接之前,一切正常,然后出现以下错误: OperationalError at /path/ (2026, 'SSL connection error') 以下是设置: 标准Django应用程序 MySQL RDS实例,安全组允许所有IP地址的连接 MySQL用户设置为允许从任何主机进行连接 亚马逊的pem已经下载并在Django设置中指定 关于Heroku: DATABASE_URL: m
OperationalError at /path/
(2026, 'SSL connection error')
以下是设置:
- 标准Django应用程序
- MySQL RDS实例,安全组允许所有IP地址的连接
- MySQL用户设置为允许从任何主机进行连接
- 亚马逊的pem已经下载并在Django设置中指定
DATABASE_URL: mysql2://username:password@instance.us-east-1.rds.amazonaws.com:3306/name_staging?sslca=path/to/mysql-ssl-ca-cert.pem
在Django设置中:
DATABASES = {
'default': dj_database_url.config()
}
DATABASES['default']['OPTIONS'] = {'ssl': {'ca': 'mysql-ssl-ca-cert.pem'}}`
我已经尝试过搜索,并且已经阅读了很多关于在Rails中设置这种类型的环境的内容,但是关于使用Django实现这一点的文档几乎不存在
是否有人成功地部署了类似的设置,或者有人想过如何解决此错误
更新:
通过cli连接和在python解释器中使用MySQLdb直接连接一样有效。解决:
pem文件的路径必须是绝对路径,不能使用python尝试构建绝对路径
DATABASES = {
'default': dj_database_url.config()
}
DATABASES['default']['OPTIONS'] = {
'ssl': {'ca': '/app/project_name/rds/mysql-ssl-ca-cert.pem'}
}
同样,像这样检测路径不起作用,必须对路径进行硬编码:
DATABASES['default']['OPTIONS'] = {
'ssl': {'ca': os.path.join(os.path.dirname(__file__), 'rds', 'mysql-ssl-ca-cert.pem')}
}
谷歌搜索,一个常见的错误源似乎是不匹配的CNs。遗憾的是,openssl的_客户端不能与mysql一起工作,否则您可以很容易地调试它。。。您可以通过mysql cli进行连接吗?可以,通过命令行进行连接工作正常。我仍然收到一个1045错误-此路径相对于什么?主(根)目录?是的,它必须是完整路径。