目录
- 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();
}