Ubuntu编译MySQL驱动连接QT

1、安装MySQL

安装MySQL软件以及驱动。

复制代码
sudo apt-get install mysql-server

sudo apt install mysql-client

sudo apt-get install libmysqlclient-dev

2、编译qmysql驱动

2.1、修改mysql.pro

找到Qt源码中的mysql.pro项目文件,一般位于:/opt/Qt/5.15.2/Src/qtbase/src/plugins/sqldrivers/mysql文件夹下。

如果非root用户,则需要更改mysql文件夹所在目录的权限,以便修改文件内容。

可使用命令:

复制代码
sudo chmod -R 777 /opt/Qt/5.15.2/Src/qtbase/src/plugins/sqldrivers/

1)修改mysql.pro文件:

#注释这一行

#QMAKE_USE += mysql

2)修改qsqldriverbase.pri文件:

For QMAKE_USE in the parent projects.

#注释这一行

#include($$shadowed($$PWD)/qtsqldrivers-config.pri)

#添加这一行

include(./configure.pri)

2.2、编译

在mysql.pro文件夹中打开终端,执行命令:

复制代码
qmake "INCLUDEPATH+=/usr/include/mysql" "LIBS+=-L/usr/lib/ -lmysqlclient" mysql.pro
make
sudo make install

注:1)qmake前面不用sudo;2)如果qmake命令不能识别,设置Qt环境变量;3)确认INCLUDEPATH+和LIBS+目录是否正确;

在/opt/Qt/5.15.2/gcc_64/plugins/sqldrivers路径下可以看到libqsqlmysql.so库文件:

3、配置MySQL

3.1、查询用户信息

驱动编译好后,Qt软件还是不能连接数据库,显示:

MySQL数据库连接失败: "Access denied for user 'root'@'localhost' QMYSQL: Unable to connect"

这是因为一般出现这种情况多数是安装新版本mysql,root密码是随机的,也不是空密码,所以要通过查看随机密码进入,再进行修改原来的密码。

输入命令查询用户信息。

复制代码
sudo cat /etc/mysql/debian.cnf

显示如下:

输入命令:

复制代码
mysql -u debian-sys-maint -p

输入debian.cnf对应的用户密码登录进去,输入命令查看用户列表。

复制代码
use mysql;
select user,plugin from user;

3.2、修改root账户

修改root 账户密码格式。

复制代码
# 修改其密码格式
update user set plugin='mysql_native_password' where user='root'; 
# 查询其用户
select user,plugin from user; 
# 刷新权限
flush privileges;

3.3、更改root账户密码

修改root账户密码为:root。

复制代码
# 修改root账号密码
alter user 'root'@'localhost' identified by 'root';
# 在次刷新权限
flush privileges;
# 退出登录
exit

可以输入命令:mysql -u debian-sys-maint -p 再输入密码root登录进去了。

也可以使用MySQL Workbench界面登录。

将root账户的密码改为Qt程序中的连接密码:

复制代码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'xxxxxxxx';
#xxxxxxxx是你要更改的密码

使用QT也成功连接到数据库,打开了软件界面:

相关推荐
lemon31062413 分钟前
dockerfile制作镜像
linux·运维·服务器·学习
暗恋 懒羊羊34 分钟前
【MySQL】表的操作
数据库·mysql
易保山42 分钟前
MIT6.S081 - Lab5 Lazy(延迟分配)
linux·操作系统·c
大桶矿泉水1 小时前
RK3588使用笔记:debian/ubuntu/麒麟系统下基础功能配置(不定期更新)
ubuntu·rk3588·银河麒麟
陈阳羽2 小时前
云服务器Ubuntu安装宝塔面板MongoDB修改配置文件本地连接
服务器·mongodb·ubuntu
想躺在地上晒成地瓜干2 小时前
树莓派超全系列文档--(14)无需交互使用raspi-config工具其一
linux·树莓派·raspberrypi·树莓派教程
Shier833_Ww2 小时前
目标识别与双目测距(1)环境搭建:Ubuntu+yolov5+pcl库
linux·yolo·ubuntu
唐青枫3 小时前
Linux 历史命令操作教程
linux
愚润求学3 小时前
Linux基础指令(一)
linux·服务器·语法
IEVEl4 小时前
CentOS 7 安装 EMQX (MQTT)
linux·运维·centos