Qt远程连接MySQL

编程入门 行业动态 更新时间:2024-10-09 09:13:24

<a href=https://www.elefans.com/category/jswz/34/1769097.html style=Qt远程连接MySQL"/>

Qt远程连接MySQL

Qt操作MySQL原理

从下图可以看到,在应用程序和数据库之间有一个驱动程序ODBC,不同DBMS(数据库管理系统,如MySQL,Oracle…)负责完善其操作(增删改查…)的驱动,并将其交给ODBC管理,而应用程序只需调用ODBC提供的接口,就能实现对数据库进行增删改查的操作,Qt就属于应用程序。

连接步骤

牢记:32位对应32位,64位对应64位!!! Qt的编译套件位数=MySQL位数=ODBC位数

MySQL部分

修改用户(root)的访问权限

root用户默认只能从localhost访问,而我们要以root用户远程登陆数据库,就要修改host为“%”,让任何ip都能访问,同时授权root用户远程访问的权限。

修改host为“%”:

update user set host = '%' where user = 'root';

查看当前访问权限:

use mysql;    					## 选择mysql数据库
select user,host from user;    	## 查看用户访问端口

若看到root对应“%”,则修改成功

授权root用户远程登陆

mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root_pwd'; ## 授权root远程登录 后面的root_pwd代表登录密码

记得刷新授权

FLUSH PRIVILEGES;
开放3306端口
  1. linux防火墙开放端口

ufw防火墙开放端口:

ufw allow 3306

firewall防火墙开放端口:

firewall-cmd --list-all 						#查看防火墙规则
firewall-cmd --permanent --add-port=3306/tcp		#开放3306端口
  1. 云服务器开放端口

ODBC部分

安装ODBC驱动

安装ODBC驱动,值得注意的是ODBC要和Qt的位数(32/64)相同,不然会影响后续操作。
官网链接: ODBC官网

查看Qt版本:帮助->关于Qt

安装完后,ODBC数据源配置

Qt部分

连接Mysql代码如下:

    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");db.setHostName("服务器ip");db.setPort(3306);db.setDatabaseName("ODBC配置中填的Data base Name");db.setUserName("user");db.setPassword("password");bool ok = db.open();if (ok){QMessageBox::information(this, "infor", "success");}else {QMessageBox::information(this, "infor", "open failed");qDebug()<<"error open database because"<<db.lastError().text();}

连接成功!

也可以通过Mysql的驱动连接数据库,可以参考大丙老师的文章: Qt中编译数据库驱动
大丙老师讲得非常详细,这里主要记录自己遇到的坑

  1. Qt内可以连接数据库,程序打包后不行
    问题分析:连接数据库需要使用libmysql.dll(位于Qt的bin目录下),因为Qt内运行会使用这个目录下的dll,而程序打包后运行不会去这个目录下查找。
    解决办法:将libmysql.dll复制到打包文件的目录下

更多推荐

Qt远程连接MySQL

本文发布于:2024-02-27 17:42:09,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1707596.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Qt   MySQL

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!