ubuntu24.04-qt5-mysql8.0
各版本适配是件麻烦的事。这篇写个ubuntu24.04 -qt5-mysql8.0
1.更新源
2.qt5
chmod a+x qt-opensource-linux-x64-5.12.1.run
./qt-opensource-linux-x64-5.12.1.run
1.系统是否有这个文件
查找 sudo find / -name *qsqlmysql*
2.查找客户端文件路径:
sudo find / -name libmysqlclient.so*
3.查找依赖库
ldd /home/tangcj/Qt5.12.1/5.12.1/gcc_64/plugins/sqldrivers/libqsqlmysql.so
如果不缺依赖库,直接返回。缺少的话会给出缺少库的名称。
sudo find / -name *qsqlmysql*
1.安装包
sudo apt-get install build-essential #1.基础编译工具
sudo apt-get install libgl1-mesa-dev libglu1-mesa-dev #2.openGL
sudo apt-get install libx11-dev libxext-dev libxt-dev libxi-dev libxrandr-dev libxrender-dev libgl-dev #3.X11 和窗口系统依赖
sudo apt install libfontconfig1-dev libfreetype-dev #4.字体和文本渲染依赖
sudo apt install libpulse-dev libasound2-dev #5.多媒体依赖
sudo apt install libmysqlclient-dev #6.数据库依赖
sudo apt install libssl-dev #7.SSL 和网络依赖
sudo apt-get install libxcb-cursor0
sudo apt-get install libtinfo5
sudo apt-get install make-guile
sudo snap install cmake --classic
2.修改环境变量
vim ~/.bashrc
export QTDIR=/home/tangcj/Qt5.12.1/5.12.1/gcc_64 # Qt 主程序路径
export PATH=$QTDIR/bin:$PATH
export QT_PLUGIN_PATH=/home/tangcj/Qt5.12.1/5.12.1/gcc_64/plugins/sqldrivers/ # Qt 插件路径(如数据库驱动)
export MANPATH=$QTDIR/man:$MANPATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
# 动态库路径(解决运行时依赖缺失问题)
source ~/.bashrc
验证
qmake -v
echo $PATH # 查看 Qt 主程序路径是否包含在 PATH 中
echo $QT_PLUGIN_PATH # 确认插件路径正确
缺少包libmysqlclient.so.18
https://downloads.mysql.com/archives/community/
1.查找 libqsqlmysql.so
sudo find / -name *sqlmysql*
/home/tangcj/Qt5.12.1/Tools/QtCreator/lib/Qt/plugins/sqldrivers/libqsqlmysql.so
/home/tangcj/Qt5.12.1/5.12.1/gcc_64/plugins/sqldrivers/libqsqlmysql.so
/usr/lib/x86_64-linux-gnu/qt5/plugins/sqldrivers/libqsqlmysql.so
2.检查驱动依赖
ldd /home/tangcj/Qt5.12.1/5.12.1/gcc_64/plugins/sqldrivers/libqsqlmysql.so
find / -name libmysqlclient.so
/usr/lib/x86_64-linux-gnu/libmysqlclient.so
ubuntu24.04 QT5 mysql
问题:
qDebug()<<QSqlDatabase::drivers(); 可以打印出QMYSQL
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");但是 QMYSQL driver not loaded
原因分析:
1.查找 sudo find / -name *sqlmysql*
结果为
/home/tangcj/Downloads/tools/mysqllibs/libqsqlmysql.so
/home/tangcj/Qt5.12.1/Tools/QtCreator/lib/Qt/plugins/sqldrivers/libqsqlmysql.so
/home/tangcj/Qt5.12.1/5.12.1/gcc_64/plugins/sqldrivers/libqsqlmysql.so
2.查找 find / -name libmysqlclient.so
/usr/lib/x86_64-linux-gnu/libmysqlclien
2.写测试程序
把依赖库和exe放在一个目录下
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QtSql/QSqlDatabase>
#include <QDebug>
#include <QMessageBox>
#include <QtSql/QSqlError>
#include <QtSql/QSqlQuery>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
qDebug()<<QSqlDatabase::drivers();
// 创建数据库连接
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost"); // MySQL 主机名
db.setDatabaseName("testdb"); // 数据库名
db.setUserName("root"); // 用户名
db.setPassword("123@1234"); // 密码
// 尝试连接
if (!db.open()) {
qDebug() << "Failed to connect to database:" << db.lastError().text();
//return -1;
}
qDebug() << "Connected to MySQL database!";
// 执行一个简单的查询
QSqlQuery query;
if (query.exec("SELECT VERSION()")) {
if (query.next()) {
qDebug() << "MySQL Version:" << query.value(0).toString();
}
} else {
qDebug() << "Query failed:" << query.lastError().text();
}
// 关闭数据库连接
db.close();
}
3.mysql8.0
1.安装 MySQL 服务器: sudo apt install mysql-server -y 不要用root装
2.MySQL 服务并使其在系统启动时自动启动
sudo systemctl start mysql sudo systemctl enable mysql
3. 配置一下 安全设置
sudo mysql_secure_installation y 0 只要求长度至少8位; 1,至少8位,数字大小写混合外加特殊字符; 2,中等的基础上和字典进行比对; 其余都是y4.查看状态 systemctl status mysql.service CTRL+C结束 5.验证: sudo mysql -u root -p 输入root用户密码 1234@1234 6.设置远程登陆 use mysql; select host,user from user; 把root从只能本地访问改成能被远程访问 xupdate user set host='%' where user='root';
update user set host='%' where user='root'; alter user 'root'@'%' identified with mysql_native_password by '123456'; select host,user from user; flush privileges; exit; 查看/etc/mysql/mysql.conf.d/mysqld.cnf 修改绑定地址:由127.0.0.1 到0.0.0.0
![]()
重启服务
systemctl restart mysql
systemctl status mysql
apt install net-tools
apt install telnetd
apt install telnet
telnet localhost 3306
telnet 192.168.1.8 3306
忘记密码的话去掉验证
update user set authentication_string='' where user='root';设置登陆密码为空
exit; 退出登录***,
vim /etc/mysql/mysql.conf.d/mysqld.cnf 删除***第一步中文件中的 skip-grant-tables,
systemctl restart mysql
systemctl status mysql 再次重启mysql服务.
root用户空密码直接登陆
mysql -u root -p passwrod:直接回车;
修改密码,需要设置复杂的密码(字母,数字,特殊符号组合)后重新登陆,如下:
ALTER user 'root'@'localhost' IDENTIFIED BY '1234@1234';
第一次登录时输入的就设置的root密码。
设置密码时会出现:密码密码策略不对:
设置密码策略:
SET GLOBAL validate_password.policy=LOW;
SET GLOBAL validate_password.mixed_case_count=0;
SET GLOBAL validate_password.number_count=0;
SET GLOBAL validate_password.special_char_count=0;
查看设置结果:
此时修改
alter user 'root'@'%' identified with mysql_native_password by '123@1234'; #只要是8位就行。
flush privileges;
此时,远方连接成功。
4.编译
4.1编译库
ubuntu
chmod -R
1.修改my.pro
去掉 QMAKE_USE += mysql
sudo apt install libmysqlclient-dev
添加3句话
windows:
INCLUDEPATH +="D:\MySQL\include" #MySQL安装的头文件路径
LIBS +="D:\MySQL\lib\libmysql.lib" #静态库
DESTDIR =../mysql/lib/ #目标路径
linux
INCLUDEPATH += /usr/include/mysql
LIBS += /usr/lib/x86_64-linux-gnu/libmysqlclient.a
DESTDIR = $$PWD/myLib/
2.修改qsqldriverbase.pri
生成库文件
复制到对应的目录下
4.2生成新工程
1.修改工程文件
2.链接使用
5.VMWare如果不能正常复制 就做个共享文件夹
下面是参考别人的没成功过。
解压复制到桌面的压缩文件
tar -zxvf VMwareTools-10.3.22-****.tar.gz -C /home/tangcj/Desktop/docker/VMwareTool
cd vmware-tools-distrib
sudo ./vmware-install.pl
1.查看共享文件夹是否生效
vmware-hgfsclient #如果显示了已挂载的文件夹列表,则说明共享文件夹已生效。
2.创建挂载目录并手动挂载
sudo mkdir /mnt/hgfs
3.手动挂载命令测试共享文件夹是否能够正常挂载
sudo mount -t fuse.vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other
挂载所使用的方法 宿主机地址 虚拟机地址 表示普通用户也能访问共享目录
4.查看挂载内容
$ ls
5.设置自动挂载
sudo vim /etc/fstab
.host:/06-VMWareShare /mnt/hgfs fuse.vmhgfs-fuse allow_other,defaults 0 0
6、没有网络

解决方法:
sudo service NetworkManager status
sudo rm /var/lib/NetworkManager/NetworkManager.state
sudo service NetworkManager start
sudo vim /etc/NetWorkManager/NetworkManager.conf,
将其中的managed=false改为managed=true