从Django连接到RDS MySQL时SSL连接错误
我正在尝试在Heroku上以RDS实例作为数据库后端部署Django应用。一切正常,直到我尝试加密连接,然后出现此错误:
OperationalError at /path/(2026, 'SSL connection error')
设置如下:
- 标准Django应用程序
- 具有安全组的MySQL RDS实例允许来自所有IP地址的连接
- MySQL用户设置为允许来自任何主机的连接
- 亚马逊的pem已下载并在Django设置中指定
在Heroku上:
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')}
}
以上是 从Django连接到RDS MySQL时SSL连接错误 的全部内容, 来源链接: utcz.com/qa/410750.html