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

相关推荐
fo安方3 分钟前
运维的利器–监控–zabbix–第三步:配置zabbix–中间件–Tomcat–步骤+验证
运维·中间件·zabbix
爱奥尼欧14 分钟前
【Linux 系统】基础IO——Linux中对文件的理解
linux·服务器·microsoft
戒不掉的伤怀41 分钟前
【Navicat 连接MySQL时出现错误1251:客户端不支持服务器请求的身份验证协议;请考虑升级MySQL客户端】
服务器·数据库·mysql
超喜欢下雨天42 分钟前
服务器安装 ros2时遇到底层库依赖冲突的问题
linux·运维·服务器·ros2
搬码临时工1 小时前
小企业如何搭建本地私有云服务器,并设置内部网络地址提供互联网访问
运维·服务器
old-six-programmer1 小时前
NAT 类型及 P2P 穿透
服务器·网络协议·webrtc·p2p·nat
tan77º1 小时前
【Linux网络编程】网络基础
linux·服务器·网络
风口上的吱吱鼠1 小时前
Armbian 25.5.1 Noble Gnome 开启远程桌面功能
服务器·ubuntu·armbian
18你磊哥2 小时前
Windows 本地安装部署 Apache Druid
运维·debian
笑衬人心。2 小时前
Ubuntu 22.04 + MySQL 8 无密码登录问题与 root 密码重置指南
linux·mysql·ubuntu