我有一个应用程序使用mysql-connector-python
(8.0.18)。我连接这样的东西:
cnx = mysql.connector.connect(user='x', password='y', host='localhost', database='xyz')
通常这不会给我带来任何麻烦,但最近在网络托管提供商的服务器上它停止工作。我现在得到的错误是这样的:
mysql.connector.errors.InterfaceError: 2026 (HY000): SSL connection error: error:1408F10B:SSL routines:ssl3_get_record:wrong version number
并且(通过 Flask-SQLAlchemy 设置连接):
_mysql_connector.MySQLInterfaceError: SSL connection error: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol
我可以确认的是,如果我这样做ssl_disabled=True
,如下所示,它连接正确(但我假设没有 SSL/TLS):
cnx = mysql.connector.connect(user='x', password='y', host='localhost', database='xyz', ssl_disabled=True)
我无法更改提供商服务器,但他们说如果我指定要使用的特定版本(例如 TLS1.2),那么它应该正确连接。他们还提到使用ssl.OP_NO_SSLv3 flag https://docs.python.org/3/library/ssl.html#ssl.OP_NO_SSLv3,但是这是 SSLContext 设置的一部分,我不确定如何应用于我的连接。
我看到他们的 MySQL 实例(我无法编辑)上没有设置任何值:
SHOW VARIABLES LIKE 'tls_version'
SHOW STATUS LIKE 'Ssl_cipher'
SHOW STATUS LIKE 'Ssl_version'