在使用Qt5.14.2连接MySQL时,报错如下:
"SSL connection error: protocol version mismatch QMYSQL: Unable to connect"
QSqlDatabasePrivate::database: unable to open database:
"SSL connection error: protocol version mismatch QMYSQL: Unable to connect"
QSqlQuery::exec: database not open
问题原因:
MySQL高版本数据库的SSL功能导致访问被拒绝
解决办法:
关闭MySQL的SSL功能。
一、查看MySQL是否开启SSL
- 打开
MySQL 5.7 Command Line Client
- 查看是否开启SSL,输入
SHOW VARIABLES LIKE '%ssl%';
。
看到have_ssl的值为YES,表示已开启SSL。(have_openssl表示是否支持SSL)
二、查找MySQL配置文件及修改配置文件
- 修改MySQL的my.ini文件
- 查看my.ini的位置
使用“win+R"打开运行窗口输入services.msc
,打开服务
窗口。
本机使用的是MYSQL57,找到MySQL的服务,右键点击,选择属性
。在可执行文件的路径栏中,可以看到"C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqld.exe" --defaults-file="C:\ProgramData\MySQL\MySQL Server 5.7\my.ini" MySQL57
。
my.ini文件路径
"C:\ProgramData\MySQL\MySQL Server 5.7\my.ini" MySQL57
- 找到my.ini文件,此时可能会找不到
ProgramData
文件夹,因为这个文件夹是被隐藏的。按下图操作打开查看隐藏的项目。
找到my.ini。
- 修改my.ini,在文件末尾添加
skip_ssl
。
-
重启MySQL服务
方式一: 打开命令行
输入services mysqld restart
。
**方式二:**在服务
中直接右键选择重新启动
。
-
再查看SSL的开启状态:
看到have_ssl的值为DISABLED,表示已关闭SSL。
结束,再次运行程序,已经可以正常连接数据库了