Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Django连接到RDS MySQL时出现SSL连接错误_Mysql_Django_Ssl_Heroku_Amazon Rds - Fatal编程技术网

从Django连接到RDS MySQL时出现SSL连接错误

从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

我正在尝试在Heroku上部署一个Django应用程序,并使用RDS实例作为数据库后端。在我尝试加密连接之前,一切正常,然后出现以下错误:

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')}
}

谷歌搜索,一个常见的错误源似乎是不匹配的CNs。遗憾的是,openssl的_客户端不能与mysql一起工作,否则您可以很容易地调试它。。。您可以通过mysql cli进行连接吗?可以,通过命令行进行连接工作正常。我仍然收到一个1045错误-此路径相对于什么?主(根)目录?是的,它必须是完整路径。