Qt5.13连接MySQL过程记录

本博文记录Qt5.13连接MySQL过程中踩过的一些坑
系统环境:

  1. 本地主机 Windows 10
  2. 服务器 Ubuntu 16.04

软件版本

  1. Qt 5.13.2 (安装在win10上)
  2. MySQL 5.7.28 (安装在Ubuntu上)

目的: 通过Qt程序连接远程服务器上的MySQL数据库完成相关操作

文章目录

  • Qt编译MySQL驱动
  • 远端Ubuntu配置MySQL开启远程连接

  当Qt和MySQL分别在对应主机上安装完成后,直接在Qt上写程序连接MySQL肯定是连接不上的,因为Qt5版本好像默认就没有mysql的驱动,而且MySQL也是默认就没有开启远程连接的,接下来需要进行相关配置。

Qt编译MySQL驱动

1. 这里会需要Qt的源码,因为编译MySQL的动态库的工程在源码中,需要自己编译,所以安装Qt的时候要勾选Sources,如下图:
Qt5.13连接MySQL过程记录_第1张图片
  我们这个时候可以找到mysql项目的代码,我电脑中的路径为:
D:\Qt\Qt5.13.2\5.13.2\Src\qtbase\src\plugins\sqldrivers\mysql
工程如下:
Qt5.13连接MySQL过程记录_第2张图片
  编译该工程会用到MySQL的库文件,所以我们在windows下面需要下载mysql的源码,我的ubuntu服务器上安装的是mysql 5.7.27版本,所以我在win下下载的是5.7.28版本的源码(找不到5.7.27的了…),下载完后解压放着就行。
  用Qt Creater打开上图的工程,需要在mysql.pro修改三个地方,其中第二处修改会用到我们刚刚下载的mysql的源码,如下:

  这里需要注意mysql的位数,qt的位数,我ubuntu下安装的是64位mysql,所以我在win下下载的是x64的mysql源码,然后打开这个工程的时候也一定要用64位的编译器,我用的是msvc2017 64bit (使用MinGW)编译器是一样的,后面我默认全部使用msvc编译器

Qt5.13连接MySQL过程记录_第3张图片
2. 到这里工程就配置完成了,可以点一下Qt窗口左下角的像锤子的按键build一下,失败的话请仔细看看前面步骤哪里做错了(博主亲测有效),这时你可以在你Qt的安装路径的最外层(也就是盘符下)得到一个plugins的文件夹,这个目录里面就有我们编译好的mysql的驱动:qsqlmysql.dll,qsqlmysqld.dll(这两个是我们需要的),如下图所示
Qt5.13连接MySQL过程记录_第4张图片
Qt5.13连接MySQL过程记录_第5张图片
到这里,我们mysql的驱动就编好了,一共三个:

  • 我们自己编译出来的两个 qsqlmysql.dll,qsqlmysqld.dll,我们将这两个拷贝到D:\Qt\Qt5.13.2\5.13.2\msvc2017_64\plugins\sqldrivers目录下(如果使用的MinGW,则自行拷贝到对应目录下);
  • 我们下载的mysql的源码中的一个libmysql.dll,路径如下:
    D:\mysql-5.7.28-winx64\mysql-5.7.28-winx64\lib,然后将该文件拷贝到D:\Qt\Qt5.13.2\5.13.2\msvc2017_64\bin目录下。

3. 这时Qt方面就应该可以用了。
  测试连接数据库的时候,项目的pro文件要加入QT += sql,我的测试代码如下,(可连接成功,不过这还需要我们把服务器端的mysql配置好,下一节进行介绍):
Qt5.13连接MySQL过程记录_第6张图片

远端Ubuntu配置MySQL开启远程连接

本人是租用的阿里云的服务器,这一点需要说一下,因为开启连接的时候有个细节需要注意一下(后面说到)。
1. 使用root登录mysql: mysql -u root -p
2. 新增一个用户:use mysql; CREATE USER ‘username’@‘localhost’ IDENTIFIED BY ‘password’;
3. 给新用户添加权限:GRANT ALL PRIVILEGES ON . TO ‘username’@’%’ IDENTIFIED BY ‘password’ WITH GRANT OPTION; flush privileges; quit;
4. 修改mysql的配置文件:sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
找到找到 bind-address = 127.0.0.1 行,在改行前面加 # 号将改行注释掉
:wq保存文本并退出
5. 重启mysql: service mysql restart
6. 这一步就是需要注意的细节,一般服务器配置防火墙规则来开放3306端口(mysql默认端口)的命令行:sudo ufw allow 3306
但是阿里云服务器的防火墙配置需登录其官网,进入控制台,然后为其添加一项开放3306端口的配置,如下图所示:
Qt5.13连接MySQL过程记录_第7张图片

到这里,我们运行前面Qt的连接数据库的工程,就可以连接成功了~~~

你可能感兴趣的:(QT5,数据库MySQL,Qt连接mysql,mysql开启远程连接)