一. 题外话
QtCreater最终生成的是一个.exe的可执行文件,我们只用双击这个文件,就可以进入我们的软件界面了。当然,我们制作上位机,除了制作软件,也可以制作网页。
下面的内容,也只是我对制作网页来和MYSQL进行连接的一些资料查看,因为我项目还是采用QT制作的软件作为上位机,所以下面的内容只是我在进行这个像目前的资料查询。
1. 查看自己的云服务器配置文件
/etc/httpd/conf/httpd.conf
/etc/httpd/conf/httpd.conf这个文件包含了服务器所需的大部分配置指令,比如监听端口,服务器名称,文档根目录,日志文件位置,模块加载,虚拟主机设置等。
我们在这个文件中可以看到这一部分
<VirtualHost *:80>
DocumentRoot 路径
ServerName 域名
<Directory "路径">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
这段代码定义了一个虚拟主机,它配置了网站在端口80上的基本设置。
<VirtualHost *:80>
# 这个指令定义了一个虚拟主机,
*:80表示这个虚拟主机监听所有IP地址的80端口(HTTP的标准端口)
DocumentRoot 路径
# 指定网站的文件根目录,即网站内容存放的目录,所有访问到这个虚拟主机的请求,如果URL中没有指定具体的文件或目录,Apache将在这个目录下查找名为index.html的文件作为响应。
ServerName 域名
#设置服务器的名称 ,这是Apache在处理请求时用来确定哪个虚拟主机配置应该被应用的标识符。确保这个名称与你的域名相匹配,并且DNS解析已经正确设置
Directory "路径">
# 定义一共针对根目录下特定目录(路径)的配置块。
Options Indexes FollowSymLinks
# 开启对目录的浏览(如果目录中没有index文件时)和允许符号链接的跟随 )
# 禁止在.htaccess文件中使用Override指令来覆盖这里的配置
AllowOverride None
# 允许所有访问,这是Apache 2.4及以上版本中的授权方式
Require all granted
2. DocumentRoot了解
我们在云服务器的配置文件中看到有一个与主机匹配的"路径",我们可以进入路径看一下,例如我打开我某一个域名对应的路径 /var/www/html
这个目录通常被用作Web内容的根目录,即所谓的"DocumentRoot",这就意味着当我们通过Web浏览器访问安装到Apache服务器上的网站时,默认情况下,Apache会从/var/www/html目录中提供网站文件(如HTML,CSS,JavaScipt,图片)
而接下来我们来探讨MySQL SDK与/var/www/html
目录之间的关系
MySQL SDK 通常指的是MySQL的软件开发工具包,它包含了一系列库,文档和工具,用于帮助开发者在他们的应用程序中集成MySQL数据库。这些库可能包括用于不同编程语言的接口(如 PHP 的 MySQLi 或 PDO_MySQL,Python 的 MySQLdb 或 PyMySQL,Java 的 JDBC 驱动等)
/var/www/html 这是一个文件系统目录,用于存放Web应用程序的静态和动态内容,这些内容通过Web服务器对外提供服务
当Web应用程序(位于 /var/www/html
或其子目录中) 需要与MySQL数据库交互时,它会通过MySQL SDK提供的接口或库来执行数据库查询,更新,插入和删除等操作。这些操作是通过网络(如果 MySQL 服务器与 Web 服务器不在同一台机器上)或者本地(如果它们在同一台机器上)进行的。
二. 正式开始
题外话结束后,我们来真正的设计QT。我们可以先查看一下mysql的运行状态,并且开放端口,随后重启防火墙就完成了。
1. 安装MySQL ODBC驱动
配置MySQL ODBC 数据源
2. Qt远程连接云服务器MYSQL
首先,在项目中的.pro文件中加上
QT += sql
然后在主文件中,包含以下头文件:
#include <QMessageBox>
#include <QSqlDatabase>#include <QSqlQuery>
#include <QDebug>
#include<QStringList>
main.c写入以下代码:
#include "mainwindow.h"
#include <QApplication>
#include <QSqlDatabase>
#include <QDebug>
#include <QStringList>
#include <QSqlQuery>
#define HOSTNAME "47.116.118.86"
#define POST 3306
#define DATANAME "test"
#define USERNAME "qt"
#define PASSWORD "zhongkeruihe"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QSqlDatabase db=QSqlDatabase::addDatabase ("QODBC");
db.setDatabaseName(DATANAME);//填写你上一步中设置的信息源名称
if(!db.open ())
{
qDebug()<<"DataBase Error"<<endl;
}
else
{
qDebug()<<"successful"<<endl;
QString cmd = "show databases;";
QSqlQuery query(cmd);
while (query.next())
{
qDebug() << "table name:" << query.value(0).toString();
}
}
//MainWindow w;
//w.show();
return a.exec();
}
如果你们也和我一样是远程连接,还需要进行一些配置,当然有看过我之前数据库那篇文章的就不需要配置了
(1)GRANT ALL PRIVILEGES ON . TO ‘用户名’@’%’ IDENTIFIED BY ‘密码’ WITH GRANT OPTION;
这里表示赋予该用户所有数据库所有表(*.*表示所有表),%表示所有IP地址。
(2)FLUSH PRIVILEGES; 刷新权限
(3)chkconfig iptables off 关闭防火墙。也可以不关闭,如果连接不上,之后再关闭即可
(4)查看Mysql配置文件种(一般是/etc/my.cnf种)是否指定了blind-address,这表示只能是某个或某几个ip能连接。如果有就将它注释了,前面加#号注释。然后从启mysql。最后,(5)重启mysql:service mysqld restart
最后我们编译运行,就能看到以及连接到MySQL了,并且能成功打印数据库
三. 参考链接
qt连接阿里云服务器上的MYSQL_阿里云_champion孺-华为开发者联盟HarmonyOS专区 (csdn.net)https://huaweidevelopers.csdn.net/6582ba9c2c13685765deaccf.html?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MzE3NTAwOCwiZXhwIjoxNzIxNzE3Mzc0LCJpYXQiOjE3MjExMTI1NzQsInVzZXJuYW1lIjoibTBfNjY3NDY1MTIifQ.qwVS7yXAzcgp5qR_YWfqObo_viVzObXLvDw_D-WeNdMQT读取云数据库(MySQL),实现对云数据库的操作管理,并可打包发给其他用户_qt querytemperature-CSDN博客https://blog.csdn.net/qq_64770714/article/details/132981341?spm=1001.2014.3001.5506QT连接Mysql简便方法和遭遇的那些坑-CSDN博客https://blog.csdn.net/qq_42758338/article/details/108993392?ops_request_misc=&request_id=&biz_id=102&utm_term=qt%E4%BD%BF%E7%94%A8ODBC%E8%BF%9E%E6%8E%A5%E9%98%BF%E9%87%8C%E4%BA%91MYSQL&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-108993392.142%5Ev100%5Epc_search_result_base4&spm=1018.2226.3001.4187