Qt+MySql开发笔记:Qt5.9.3的mingw32版本编译MySql8版本驱动并Demo连接数据库测试

若该文为原创文章,转载请注明原文出处
本文章博客地址:https://hpzwl.blog.csdn.net/article/details/129687210

红胖子网络科技博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…

Qt开发专栏:三方库开发技术


前言

  之前特定的mysql版本msvc版本已经调通了,但是为了更好的跨平台,所以选择用mingw32版本,于是需要编译mysql驱动的mingw32版本的驱动库,以便提供给qt连接mysql使用。


编译环境

Qt5.9.3 mingw32

  安装得时候记得要勾选上源码

mysql-installer-community-8.0.16.0

  在这里插入图片描述

下载数据库

  https://downloads.mysql.com/archives/community/
  在这里插入图片描述


编译mysql驱动库(Qt5.9.3+mysql8.0.16)

步骤一:安装Qt5.9.3勾选mingw32版本。

  在这里插入图片描述
  其他过程略。

步骤二:下载数据库32位驱动运行程序并解压

  下载数据库运行包文件。(注意:这里要注意跟目标机器安装的版本要一致)。
  下载地址:https://downloads.mysql.com/archives/c-c
  在这里插入图片描述
  在这里插入图片描述

步骤三:打开qt中自带的mysql源码工程

  在这里插入图片描述
  使用QtCreator打开:
  在这里插入图片描述
  注意工程的编译套件。(注意:shadow build在这里不管作用,最后是生成到根目录上去了,跟pro包含的pri配置有关
   在这里插入图片描述
  在这里插入图片描述
  在这里插入图片描述

步骤四:qmake并且build构建

  构建成功:
  在这里插入图片描述
  这里生成到磁盘根目录下去了:
  在这里插入图片描述
  在这里插入图片描述

步骤五:替换插件的mysql库

  在这里插入图片描述

步骤六:将数据库的libmysql.dll拷贝到bin目录

  这个文件是运行库,也是需要自动手动额外copy和打包时额外拷贝的,具体看 “入坑一”。
  需要将下载下来mysql的lib下的libmysql.dll拷贝到qt的gcc的bin目录下,而且打包软件的时候也要带上。
  在这里插入图片描述
  如果是打包,则windeployqt不会主动拷贝,也需要手动复制过去:
  在这里插入图片描述

步骤七:编译应用连接测试

  编译数据库的工程:
  在这里插入图片描述
  Ok了,提示不再是缺少驱动了。
  下面配置好数据库,再尝试:
  在这里插入图片描述

步骤八:配置数据库账号允许远程操作

  这是因为账号不被允许远程登录,所以需要修改数据库用户的配置,让其允许远程登录。
  修改用户被允许远程登录,先使用mysql控制端输入密码登录,然后操作:

use mysql;
select host,host from user;
update user set host = ‘%’ where user = ‘root’;
select host,host from user;

  这时候,还是不行,需要强行刷新以下

flush privileges;

  在这里插入图片描述

  在这里插入图片描述

  然后成功:
  在这里插入图片描述
  至此,Qt5.9.3 mingw32 + mysql8.0.16数据库完成。

步骤九:数据库的远程操作工具连接

  使用远程工具测试,发现出错:
  在这里插入图片描述

  这是因为8.0之后mysql更改了密码的加密规则,目前的客户端连接软件还不支持Mysql8新增加的加密方式caching_sha2_password,所以需要修改用户的加密方式,将其改回旧加密验证方式。
  先登录mysql命令行,执行以下,主要是youPassword要替换为你使用远程登录的账户密码:

alter user 'root'@'%' identified by 'youPassword' password expire never;
alter user root identified with mysql_native_password by 'youPassword';
flush privileges;

   在这里插入图片描述
  在这里插入图片描述


入坑

入坑一:开始连通后打包后不行了,回头也不行了

问题

  开始连通后打包后不行了,回头也不行了

原因

  需要使用到libmysql.dll运行库

解决

  需要将下载下来mysql的lib下的libmysql.dll拷贝到qt的gcc的bin目录下,而且打包软件的时候也要带上。
  在这里插入图片描述

  如果是打包,则windeployqt不会主动拷贝,也需要手动复制过去:
  在这里插入图片描述


若该文为原创文章,转载请注明原文出处
本文章博客地址:https://hpzwl.blog.csdn.net/article/details/129687210

猜你喜欢

转载自blog.csdn.net/qq21497936/article/details/129687210