目录
- 1、下载驱动,放入文件夹
 - 2、编写代码,实现本地访问
 - 3、实现网络数据库
 - 3.1 更改权限
 - 3.2 修改代码
 
之前写了一个图书管理系统用的是sqlite3,现在想用mysql,部署到网上,实现远程访问。
1、下载驱动,放入文件夹
首先,我的qt6没有安装mysql的驱动需要自己下载放入mysql驱动github链接
 
 下载完成后解压放入对应的qt安装路径路径E:\VS2022\VSQT\6.4.3\mingw_64\plugins\sqldrivers

 把文件夹外边另外三个文件复制到qt的bin里边
 
2、编写代码,实现本地访问
我在之前已经在mysql里重新制作了表格,只替换了连接数据的代码,其余代码功能一切正常。
void sqlmange::init()
{
    // 打开数据库
    // 使用 QMYSQL3 数据库驱动
    m_db = QSqlDatabase::addDatabase("QMYSQL");
    // 设置数据库名称
    // 数据库名为 bookmg
    m_db.setDatabaseName("bookmg");
    // 设置数据库用户名和密码
    // 用户名为 root,密码为
    m_db.setUserName("root");
    m_db.setPassword("xxxxxx");
    // 设置数据库服务器地址
    // 服务器地址为 localhost
    m_db.setHostName("localhost");
    // 打开数据库
    // 并输出打开结果到调试信息
    qDebug() <<"数据库连接:"+ m_db.open();
}
 
3、实现网络数据库
cmd里输入ipconfig,查询自己当前连接的网络的ip放入连接,此时显示我的电脑不允许访问这个数据区,那就是权限的问题
 
 
但是我发现我新建的库没有权限的表,所以我把我的表
 都移动了,放入了mysql这个数据库里,并且把user表的表名更改为了usertb
 
3.1 更改权限
打开MySQL 8.0 Command Line Client,准备更改权限。
 首先show databases;查看所有的数据库
 
然后use mysql;进入mysql数据库

 show tables;显示表,其中user表里是存放了权限
 
 select user,host from user;进入user表
 
  update user set host = '%' where user = 'root';更新权限
 
 flush privileges;刷新数据库,这样就完成了,通过了网络访问了数据库
 
3.2 修改代码
在qt里修改代码,就能够访问,debug能访问数据库,但是我打包程序单独使用无法访问
void sqlmange::init()
{
    // 打开数据库
    // 使用 QMYSQL 数据库驱动
    m_db = QSqlDatabase::addDatabase("QMYSQL");
    // 设置数据库名称
    // 数据库名为 my_database
    m_db.setDatabaseName("mysql");
    // 设置数据库用户名和密码
    // 用户名为 root,密码为 123456
    m_db.setUserName("root");
    m_db.setPassword("xxx");
    // 设置数据库服务器地址
    // 服务器地址为 localhost
    m_db.setHostName("xxx");
    m_db.setPort(xxx);
    // 打开数据库
    // 并输出打开结果到调试信息
    qDebug() <<"数据库连接:"+ m_db.open();
}
                


















