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
    评论
要在Linux系统上使用Qt连接MySQL数据库,您需要完成以下步骤: 1. 安装MySQL服务器和客户端库 在Linux上安装MySQL服务器和客户端库,可以通过以下命令实现: ``` sudo apt-get install mysql-server libmysqlclient-dev ``` 2. 创建Qt项目 在Qt中创建一个新的项目,并确保您已经为所选的Qt版本安装了MySQL驱动程序。如果没有安装,请在Qt Creator的“帮助”菜单下选择“关于插件”并检查MySQL插件是否已安装。 3. 添加MySQL驱动程序 在Qt Creator中,选择项目文件并打开.pro文件。在此文件中,添加以下行: ``` QT += sql QT += mysql ``` 这将确保您的项目包含Qt SQL和MySQL驱动程序。 4. 编写连接代码 在main.cpp文件中,编写以下代码来连接MySQL数据库: ``` #include <QCoreApplication> #include <QSqlDatabase> #include <QDebug> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("localhost"); // MySQL服务器地址 db.setDatabaseName("mydatabase"); // 数据库名称 db.setUserName("username"); // 用户名 db.setPassword("password"); // 密码 if (db.open()) { qDebug() << "Connected to database!"; } else { qDebug() << "Failed to connect to database!"; } return a.exec(); } ``` 在这个例子中,我们使用QSqlDatabase类来连接数据库。首先,我们通过addDatabase()函数添加MySQL驱动程序,并设置连接参数。然后,我们通过open()函数打开连接。如果连接成功,我们将在控制台输出“Connected to database!”,否则输出“Failed to connect to database!”。 5. 运行项目 使用Qt Creator编译并运行您的项目。如果所有步骤都正确完成,您将在控制台上看到“Connected to database!”。 希望这可以帮助您在Linux上使用Qt连接MySQL数据库

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值