linux下完美解决qt连接mysql数据库无驱动的问题。

1.更新源
备份源列表:sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
编辑源列表:sudo vi /etc/apt/sources.list
在列表中添加国内的阿里源:
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
更新(但不要升级):

sudo apt-get update
#sudo apt-get update && sudo apt-get upgrade

2、安装mysql
查看是否安装mysql:sudo netstat -tap | grep mysql
如没有返回信息,则通过源安装:sudo apt-get install mysql-server
查看mysql版本:mysql -V
查看初始用户和密码(user、password项):sudo cat /etc/mysql/debian.cnf
设置跳过密码:sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
#在[mysqld]中添加如下一行
skip-grant-tables
重启mysql服务:sudo service mysql restart
登录mysql(根据提示输入上面查看到的初始密码):mysql -uroot -p
使用mysql数据库:use mysql;
修改root的密码:update user set authenticATIon_string=password('myroot') where user='root';
查看加密方式(如果plugin为auth_socket,就需要修改):select user, plugin from user;
修改plugin:update user set authenticATIon_string=password("myroot"),plugin='mysql_native_password' where user='root';
刷新:flush privileges;
退出:quit;
配置文件中注释掉 skip-grant-tables :

#skip-grant-tables
重启mysql服务:sudo service mysql restart
开启远程访问数据库,修改配置文件:sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
注释掉本地登录限制:
#bind-address=127.0.0.1
重启mysql服务:sudo service mysql restart
切换数据库:use mysql;
授权root可远程登录:grant all on . to root@'%' identified by 'myroot';
刷新:flush privileges;
退出:quit;
重启mysql服务:sudo service mysql restart
安装Mysql图形管理界面:
sudo apt-get install mysql-workbench
3、使用Qt5.12.10编译MySql
进入Qt的安装目录我的是:/opt/Qt5.12.10/,下面涉及到路径的时候,注意把Qt的安装路径改为你自己的Qt安装路径
数据库的驱动文件存放目录:/opt/Qt5.12.10/5.12.10/gcc_64/plugins/sqldirvers/在这个目录中存放着数据库的驱动文件(*.so),只有存在驱动文件的数据库才可以连接。
我们的目的就是编译出名为:libqsqlmysql.so的驱动文件,放在这个目录下。
正式的编译工作:
cd /opt/Qt5.12.10/5.12.10/Src/qtbase/src/plugins/sqldrivers/mysql
这个路径中存在mysql数据库的配置文件mysql.pro
修改mysql.pro文件
TARGET = qsqlmysql

HEADERS += $$PWD/qsql_mysql_p.h
SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp
#QMAKE_USE += mysql (注释掉)
OTHER_FILES += mysql.json
PLUGIN_CLASS_NAME = QMYSQLDriverPlugin
include(../qsqldriverbase.pri) 
编译.pro文件
sudo /opt/Qt5.12.3/5.12.3/gcc_64/bin/qmake "INCLUDEPATH+=/usr/include/mysql" "LIBS+=-L/usr/lib/x86_64-linux-gnu/ -lmysqlclient" mysql.pro
sudo make && make install
上面最后的mysql.pro文件就是必须要的编译文件名
/usr/include/mysql是头文件mysql.h所在的目录。(这里对应着之前安装的mysql依赖)
/usr/lib/x86_64-linux-gnu/这个目录中存在 mysqlclient.so文件。
“Cannot read /opt/Qt5.12.10/5.12.10/Src/qtbase/src/plugins/sqldrivers/qtsqldrivers-config.pri: No such file or directory.
解决办法:将目录/opt/Qt5.12.10/5.12.10/Src/qtbase/src/plugins/sqldrivers下的qsqldriverbase.pri文件修改

QT  = core core-private sql-private
# For QMAKE_USE in the parent projects.
# 修改了这一行,并不是configure.pri之前是qtsqldrivers-config.pri这个名字
# 这是Qt自身命名错误的原因!!!
include($$shadowed($$PWD)/configure.pri)
PLUGIN_TYPE = sqldrivers
load(qt_plugin)
DEFINES += QT_NO_CAST_TO_ASCII QT_NO_CAST_FROM_ASCII
再次执行上面的命令。
编译成功之后
可以 在/opt/Qt5.12.10/5.12.10/Src/qtbase/src/plugins/sqldrivers/plugins/sqldrivers目录下发现有新生成的两个文件:
libqsqlmysql.so
libqsqlmysql.so.debug
拷贝libqsqlmysql.so到/opt/Qt5.12.10_1/5.12.10/gcc_64/plugins/sqldrivers目录。
4、QT连接MySql数据库
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QSqlDatabase>
#include <QSqlDriver>
#include <QSqlQuery>
#include <QSqlError>
#include<QDebug>

void MainWindow::on_pushButton_clicked()
{
    QSqlDatabase sql = QSqlDatabase::addDatabase("QMYSQL");
    sql.setHostName("192.168.1.91");
    sql.setDatabaseName("mysql");    // 数据库名

    sql.setUserName("root");            // 用户名
    sql.setPassword("myroot");            // 密码


    qDebug()<<QSqlDatabase::drivers();
    if(sql.open()){
        qDebug()<<"打开数据库成功!";
    }
    else{
        qDebug()<<"打开数据库失败"<<sql.lastError().text();
    }
}

完美解决qt连接mysql数据库无驱动的问题。
5、安装图形化管理工具phpMyAdmin
$ sudo apt install phpmyadmin
参考连接安装phpMyAdmin安装 MySQL 和 phpMyAdmin
https://blog.csdn.net/RBPicsdn/article/details/85176646

6、虚拟机扩容
https://blog.csdn.net/qq_34106574/article/details/109593514
打开我的计算机Ubuntu,打开终端,输入sudo apt-get install gparted安装gparted,然后sudo gparted运行


麒麟系统开发笔记(二):国产麒麟系统搭建Qt开发环境安装Qt5.12
https://blog.csdn.net/weixin_32139147/article/details/113294212
ubuntu qt5 编译libqsqlmysql.so并测试(能运行)
https://www.cnblogs.com/herd/p/14718163.html
Ubuntu20.04下使用Qt5.12.10连接MySQL8.0.25数据库
https://blog.csdn.net/weixin_45848751/article/details/117989901

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值