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

相关推荐
23级二本计科2 分钟前
TCP 全连接队列 内核层理解socket
服务器·网络·tcp/ip
好好学习O(∩_∩)O1 小时前
[网络][tcp协议]:tcp报头
服务器·网络·tcp/ip
zhonguncle1 小时前
如何在Ubuntu上构建编译LLVM和ISPC,以及Ubuntu上ISPC的使用方法
linux·ubuntu·ispc
Wizard7972 小时前
在linux 系统下的qt 安装mqtt库
linux·运维·qt
无名之逆2 小时前
Hyperlane:Rust 生态中的轻量级高性能 HTTP 服务器库,助力现代 Web 开发
服务器·开发语言·前端·后端·http·面试·rust
Python破壁人手记3 小时前
《我的Python觉醒之路》之转型Python(十五)——控制流
java·服务器·开发语言·网络·python
Michaelwubo3 小时前
jenkins 配置邮件问题整理
java·运维·jenkins
Ares-Wang3 小时前
Linux》Ubuntu》Docker >>安装中文版GitLab compose
linux·ubuntu·docker
无名之逆4 小时前
轻量级、高性能的 Rust HTTP 服务器库 —— Hyperlane
服务器·开发语言·前端·后端·http·rust
「QT(C++)开发工程师」4 小时前
嵌入式Linux | 什么是 BootLoader、Linux 内核(kernel)、和文件系统?
linux·运维·服务器