mysql - 将 tls1.2 与 python 3.5 和 mysql 服务器一起使用
问题描述
我已经按照https://dev.mysql.com/doc/connector-python/en/connector-python-connectargs.html从我的 python 应用程序成功连接到 mysql 服务器
问题是我使用 tls 版本 1。但我想至少使用 tls 1.2
在 mysql 服务器上,我已设置为仅使用 tls1.1 和 1.2。当我尝试连接到 mysql 时,python 抱怨版本错误。
mysql.connector.errors.InterfaceError: 2055:
Lost connection to MySQL server `at '192.168.99.100:3306',`
system error: 1 [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1045)
print(ssl.OPENSSL_VERSION) 向我展示了 OpenSSL 1.0.2d 2015 年 7 月 9 日我应该怎么做才能让 python 3.5 使用 tls1.2
我使用的代码
from tkinter import *
import mysql.connector
from mysql.connector.constants import ClientFlag
from datetime import datetime
import ssl
print(ssl.OPENSSL_VERSION)
config = {
'user': 'user',
'password': 'password',
'host': '192.168.99.100',
'database' : "pizza",
'client_flags': [ClientFlag.SSL],
'ssl_ca': 'C:\\Users\\Linux\\PycharmProjects\\Kassa\\ca-cert.pem',
'ssl_cert':'C:\\Users\\Linux\\PycharmProjects\\Kassa\\client-cert.pem',
'ssl_key':'C:\\Users\\Linux\\PycharmProjects\\Kassa\\client-key.pem'
}
mydb = mysql.connector.connect(**config)
mycursor = mydb.cursor()
解决方案
在浪费了很多时间之后,我终于找到了问题所在。问题很简单。我使用了 pycharm 并下载了错误的 sql-connector,它只支持 tls1。通过从 mysql 网站获取 mysql-connector-python,我得到了正确的版本 8.0.12
所以为了将来,最好检查你使用的所有软件版本。
推荐阅读
- c# - 用于请求/响应机制的 MassTransit 自定义查询/命令拓扑
- flutter - 如何使用 getx 库 Flutter 中的 GetConnect 在 http 请求中使用 SSL Pining 证书
- class - 导入类函数变量
- python - 如何仅重新排列 Pyspark Dataframe 的某些列而不列出所有列名?
- reactjs - 为什么即使我使用了 useCallback,子组件也会重新渲染?
- python - 用正则表达式python替换文件名中的字符
- clickhouse - 在 clickhouse 中创建表时如何将自定义默认值添加到 Nullable 类型?
- unit-testing - 使用默认参数实现 assert_call_once_with() 方法
- vue.js - 内部组件中的路由器链接
- flutter - 如何在颤振中创建这个小部件(“下面提到了图像”)