脚本宝典收集整理的这篇文章主要介绍了Qt远程连接MySQL,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
基于项目需求,现需要在Windows环境下使用Qt项目远程连接Ubuntu下的MySQL数据库。
Qt在5.12版本后下载不再自带QMYSQL 驱动,所以如果要使用QMYSQL驱动需要自己编译。
文件所在路径为D:Qt5.15.2Srcqtbasesrcpluginssqldrivers
D:Qt是我的Qt的安装目录,如果没有找到Src文件夹,则使用Qt的MaintenanceTool.exe在选择组件时选中Source。
下载地址:https://downloads.mysql.com/archives/c-c/
下载对应位数版本的源码,
注意,使用的Qt版本和数据库MySQL的版本位数必须相同,既要么都是32位,要么都是64位。
注释掉 QMAKE_USE += mysql语句,不然会报错找不到
添加库文件路径LIBS和 头文件路径(直接复制过来的路径是 ,需要修改成 / )
指定编译后的结果文件存放的地方 DESTDIR
该文件中有这么一句
include($$shadowed($$PWD)/qtsqldrivers-config.pri)
但是在Qt的文件夹中并不能找到该文件,会报错。但是,我们可以在文件夹中找到configure.pri文件。所以,修改上面语句:
#include($$shadowed($$PWD)/qtsqldrivers-config.pri)
include (./configure.pri)
在Debug模式下编译或Release模式。
(笔者在Debug下编译成功但没有结果文件,在Release下编译成功得到结果文件
将结果文件中的两个DLL文件移动到你的Qt目录下, D:Qt5.15.2msvc2019_64pluginssqldrivers(笔者用的msvc)
qDebug() << QSqlDatabase::drivers();
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); //选择使用的QSql Driver db.setHostName("192.168.1.229"); //远程连接的数据库IP地址 db.setPort(3306); //数据库提供的端口 db.setUserName("xxx"); //远程连接的用户 db.setPassword("xxx"); // 密码 db.setDatabaseName("0voice"); //要访问的数据库 // db.setConnectOptions("SSL_KEY=client-key.pem;SSL_CERT=client-cert.pem;SSL_CA=ca-cert.pem;CLIENT_IGNORE_SPACE=1"); if(!db.open()) { qDebug() << db.lastError().text(); }else { qDebug() << "连接成功"; return ; }
需要在MySQL的数据库中有可用于远程访问的用户。
MySQL8.0版本默认的加密方式是caching_sha2_password。但是很多客户端很难支持,笔者在数据库配置中将密码加密方式改为了mysql_native_password。
ubuntu下的MySQL8.0默认开启远程连接SSL。
所以远程连接需要处理SSL。
以上是脚本宝典为你收集整理的Qt远程连接MySQL全部内容,希望文章能够帮你解决Qt远程连接MySQL所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。