当前位置: 首页 > article >正文

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,中等的基础上和字典进行比对;
其余都是y


4.查看状态  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


 


http://www.kler.cn/a/590113.html

相关文章:

  • AI-医学影像分割方法与流程
  • 华为eNSP(Enterprise Network Simulation Platform)实战指南
  • WEB安全--SQL注入--预防SQL注入的一些方法
  • Kafka 中的偏移量是什么?它解决了哪些问题?
  • HTML 基础夯实:标签、属性与基本结构的学习进度(二)
  • 数据可视化在特征分布对比中的应用
  • DataWhale 大语言模型 - 大模型技术基础
  • 重生之我在学Vue--第13天 Vue 3 单元测试实战指南
  • C语言文件管理详解(上)
  • 在 macOS Sequoia 15.2 中启用「三指拖动」并实现快速复制的完整指南 ✨
  • DeepSeek-R1学习
  • 如何用Python IP归属地查询API追踪网络活动?
  • 一周学会Flask3 Python Web开发-SQLAlchemy查询所有数据操作-班级模块
  • Ubuntu上部署Flask+MySQL项目
  • Redis 的特点
  • 兄弟们,不会服务器繁忙的DeepSeek R1/V3真满血版来了,支持网页版和API接入,免费500万tokens吃到饱,绝绝子!!!
  • 【Linux我做主】浅谈Shell及其原理
  • 学习 TensorFlow Lite 和 LSTM 时序模型的系统化路径
  • 低空经济腾飞:无人机送货、空中通勤,未来已来
  • 主流区块链