搭建MQTT服务器

article/2025/8/22 7:23:05

搭建MQTT服务器

  • 安装EMQX
    • 命令配置 EMQX Apt 源:
    • 安装 EMQX
    • 启动 EMQX
  • 卸载EMQX
  • 登录EMQX控制台
    • 开放端口
    • 打开
    • 测试MQTT通信
  • MQTT客户端测试
    • 添加客户端认证配置
  • 客户端授权配置
  • API接口说明
  • 安装MySQL数据库
    • 1. 下载 MySQL APT 配置包
    • 2. 安装仓库配置包
    • 3. 更新系统包索引
    • 4. 安装MySQL
    • 5.启动 MySQL 服务
    • 6.查看MySQL的状态
    • 7.设置开机自启
    • 8.登录 MySQL
    • 9.修改 root 密码
    • 10.创建允许远程访问的用户
    • 11.查看用户权限
    • 12.重启 MySQL 服务
  • 卸载MySQL数据库
    • 1.停止服务
    • 2.卸载软件包
    • 3.删除 MySQL 数据目录
    • 4、清理残留文件
    • 5.确认卸载结果
  • 绑定EMQX
    • Navicat连接测试
    • 2.客户端认证

安装EMQX

这里使用的是ubuntu的操作系统。

命令配置 EMQX Apt 源:

curl -s https://assets.emqx.com/scripts/install-emqx-deb.sh | sudo bash

在这里插入图片描述

安装 EMQX

sudo apt-get install emqx

在这里插入图片描述

启动 EMQX

sudo systemctl start emqx

在这里插入图片描述
常用的一些命令

sudo systemctl emqx start    启动
sudo systemctl emqx stop     停止
sudo systemctl emqx restart  重启

卸载EMQX

sudo apt remove --purge emqx
sudo apt autoremove  # 移除不再需要的依赖

删除残留文件

sudo rm -rf /etc/emqx       # 配置文件
sudo rm -rf /var/lib/emqx    # 数据文件
sudo rm -rf /var/log/emqx    # 日志文件

登录EMQX控制台

开放端口

首先将18083/1883/8083这三个端口给开放
在这里插入图片描述

打开

在浏览器里输入IP地址:18083。进入到控制台,第一次打开有点慢。
在这里插入图片描述

初始账号密码为admin,public。

第一次进入时会让你进行修改密码,这里我们按照他的提示进行修改密码。
在这里插入图片描述
成功进入:
在这里插入图片描述

测试MQTT通信

新建一个客户端。
在这里插入图片描述
连接成功后,依次点击订阅,发布。如果下面消息可以正常的接收。说明MQTT服务器通信是正常的。
在这里插入图片描述

MQTT客户端测试

服务器地址填写ip地址。用户名和密码任意填写,由于还没进行配置客户端认证所以现在谁都可以填上。
在这里插入图片描述
接着添加订阅和发布。
在这里插入图片描述
可以看到此时MQTT客户端已经可以和控制台进行通信,说明MQTT连接没有问题。
在这里插入图片描述
在这里插入图片描述

添加客户端认证配置

1.打开认证页面。
在这里插入图片描述
2.选择密码认证。
在这里插入图片描述
3.选着内置数据库。
在这里插入图片描述
4.设置认证方式(都可以默认,不用改),直接点击创建。在这里插入图片描述
5.创建成功后,点击用户管理。
在这里插入图片描述
6.添加用户
在这里插入图片描述
在这里插入图片描述
创建两个用户。
在这里插入图片描述
7.MQTT客户端连接测试
可以发现之前任意输入的用户名和密码现在已经连接不上了。
在这里插入图片描述
将其修改为上面添加的用户就可以了。
在这里插入图片描述
在这里插入图片描述

客户端授权配置

客户端授权页面可以配置每个客户端(设备)的主题发布,订阅权限。限制它是否可以发布主题,订阅主题。
1.创建数据源
在这里插入图片描述
2.选择内置数据库点击下一步并创建
在这里插入图片描述
3.点击权限管理
在这里插入图片描述
4.选择客户端ID
在这里插入图片描述
5.点击添加
在这里插入图片描述

6.设备间通信测试在这里插入代码片
在这里插入图片描述
设备A的MQTT信息

MQTT服务器地址:xxxxxxx
MQTT服务器端口号:1883
MQTT客户端ID:111
MQTT用户名:test1
MQTT登录密码:12345678
​
订阅主题:222/#
发布主题:111/1
发布的消息:{ "msg": "我是test1设备" }

设备B的MQTT信息:

MQTT服务器地址:xxxxxxx
MQTT服务器端口号:1883
MQTT客户端ID:222
MQTT用户名:test2
MQTT登录密码:12345678
​
订阅主题:111/#
发布主题:222/1
发布的消息:{ "msg": "我是test2设备" }

API接口说明

帮助文档地址: https://www.emqx.io/docs/zh/v5.0/admin/api.html#%E8%AE%A4%E8%AF%81
在EMQX服务启动后,可以访问http://localhost:18083/api-docs/index.html来查看API文档,同时也可以直接在Swagger UI 上尝试执行一些 API。
访问效果:
在这里插入图片描述

安装MySQL数据库

1. 下载 MySQL APT 配置包

wget https://dev.mysql.com/get/mysql-apt-config_0.8.26-1_all.deb

在这里插入图片描述

2. 安装仓库配置包

sudo dpkg -i mysql-apt-config_0.8.26-1_all.deb

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
确保到这一步自己的情况是这样的。然后OK保存。

在这里插入图片描述

在这里插入图片描述

3. 更新系统包索引

apt-get update

在这里插入图片描述

4. 安装MySQL

 apt-get install mysql-server

在这里插入图片描述

5.启动 MySQL 服务

sudo systemctl start mysql  # Ubuntu中服务名为mysql而非mysqld

6.查看MySQL的状态

systemctl status mysql

在这里插入图片描述

7.设置开机自启

sudo systemctl enable mysql

在这里插入图片描述

8.登录 MySQL

mysql -u root -p

在这里插入图片描述

9.修改 root 密码

ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';   
FLUSH PRIVILEGES;

10.创建允许远程访问的用户

记得打开3306端口的防火墙。

CREATE USER '用户名'@'%' IDENTIFIED BY '你的密码';  # 创建允许远程访问的用户
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
将:bind-address = 127.0.0.1
改为:bind-address = 0.0.0.0

11.查看用户权限

确保存在允许远程访问的用户(如 ‘user’@‘%’,% 表示允许所有 IP 访问)

SELECT User, Host FROM mysql.user;

在这里插入图片描述

12.重启 MySQL 服务

sudo systemctl restart mysql

卸载MySQL数据库

1.停止服务

sudo systemctl stop mysql

2.卸载软件包

# 移除MySQL服务器及依赖
sudo apt remove --purge mysql-server mysql-server-5.7 mysql-client mysql-client-5.7 mysql-common# 自动移除不再需要的依赖
sudo apt autoremove# 清理残留的配置文件
sudo apt purge mysql-*

3.删除 MySQL 数据目录

注意:这将彻底删除所有数据库文件(包括数据和日志),请提前备份重要数据!

sudo rm -rf /var/lib/mysql       # MySQL数据目录
sudo rm -rf /var/log/mysql        # MySQL日志目录
sudo rm -rf /etc/mysql            # MySQL配置目录

4、清理残留文件

检查并删除其他可能残留的 MySQL 文件:

sudo find / -name 'mysql*' -exec rm -rf {} \; 2>/dev/null

5.确认卸载结果

mysql --version    # 应提示"command not found"
dpkg -l | grep mysql   # 不应显示任何MySQL相关包

绑定EMQX

Navicat连接测试

1.首先进行Navicat客户端的连接测试,看是否可以正常连接。
在这里插入图片描述
2.新建MQTT_USER数据库
在这里插入图片描述
在这里插入图片描述

2.客户端认证

1.创建新的客户端认证
在这里插入图片描述
在这里插入图片描述
3.数据源选择MySQL。在这里插入图片描述
在这里插入图片描述


http://www.hkcw.cn/article/EenOwWVFLX.shtml

相关文章

【博客系统】博客系统第十一弹:部署博客系统项目到 Linux 系统

搭建 Java 部署环境 apt apt(Advanced Packaging Tool)是 Linux 软件包管理工具,用于在 Ubuntu、Debian 和相关 Linux 发行版上安装、更新、删除和管理 deb 软件包。 大多数 apt 命令必须以具有 sudo 权限的用户身份运行。 apt 常用命令 列出…

如何利用categraf的exec插件实现对Linux主机系统用户及密码有效期进行监控及告警?

需求描述 Categraf作为夜莺监控平台的数据采集工具,为了保障Linux主机的安全,需要实现对系统用户密码有效期的监控,并在密码即将到期时及时告警,以提醒运维人员更改密码。本章将详细介绍如何利用Categraf的exec插件来实现这一功能…

Houdini POP入门学习02

本篇继续随教程学习POP,并附带学习一些wrangle知识点等。 1.新建空项目,添加Geometry sphere小球。 2.连接popnet,现在粒子随小球形态发射 3.双击进入popnet,在wire_pops_into_here处连接popwind,添加风力 4.设置Wind…

《藏海传》平津侯被斩首!着实让人恨的牙痒痒

《藏海传》平津侯被斩首。藏海传演到今天,目前最大的反派就是平津侯,他霸道强势,杀人如麻,掌控许多人的命运,又有实力派演员黄觉演绎,着实让人恨的牙痒痒。平津侯名字庄芦隐,战功赫赫,他一副正义凛然不信鬼神之说的样子,其实并不是。他逼杀藏海父母,都知道是为了癸玺…

哪吒汽车总部LOGO被连夜拆除?公司回应!原CEO张勇名下超4000万股权被冻结 搬迁与股权冻结引关注

哪吒汽车上海总部外墙的“哪吒汽车”LOGO已被拆除,一同被拆除的还有位于总部的哪吒体验中心标志。据透露,拆除原因是场地到期,公司即将搬家。具体的新办公室地址尚未公布。哪吒汽车原CEO张勇名下股权被冻结,金额为4050万元,冻结期限从2025年5月13日至2028年5月12日。张勇是…

特朗普政府请求上诉法院暂停关税裁决 裁决暂时搁置

5月29日,美国联邦巡回上诉法院批准了特朗普政府的请求,暂时搁置了美国国际贸易法院此前做出的禁止执行依据《国际紧急经济权力法》对多国加征关税措施的裁决。联邦巡回上诉法院表示,在审议相关动议文件期间,美国国际贸易法院在这些案件中作出的判决和永久性禁令将暂时中止,…

禁招国际生案哈佛再获胜 美政府改立场

禁招国际生案哈佛再获胜 美政府改立场提出“30天限期”当地时间29日,美国马萨诸塞州联邦地区法院一名法官批准了哈佛大学提出的发布初步禁令请求,“叫停”特朗普政府取消哈佛大学招收外国学生资质的政策。该法院法官艾莉森伯勒斯29日就该案举行听证会。法院网站最新信息显示,…

中国对沙特等4国试行免签!欢迎说走就走的中国行

5月28日,外交部发言人毛宁主持例行记者会。有记者提问称,中方在东盟-中国-海合会峰会期间宣布对沙特等四国试行免签政策,希望了解具体情况。毛宁表示,为便利中外人员往来,中方决定扩大免签国家范围。自2025年6月9日至2026年6月8日,对沙特、阿曼、科威特、巴林持普通护照人…

【Unity基础】Unity新手实战教程:用ScriptableObject控制Cube颜色

目录 项目概述🛠️ 完整操作步骤(10分钟内完成)步骤1:创建ScriptableObject类步骤2:创建颜色配置资产步骤3:创建Cube控制器步骤4:设置场景和Cube步骤5:添加简单UI提示步骤6&#xff…

美宣布撤销中国留学生签证 我使馆:已提出严正交涉

美方宣布撤销中国留学生签证 我使馆:已提出严正交涉关于美国务院发表声明称将撤销有关中国在美留学生签证一事,中国驻美使馆发言人5月29日在回答媒体提问时表示,中方坚决反对美方这一政治性、歧视性做法。中国驻美使馆表示,美方此举将严重损害中国在美留学人员正当合法权益…

硅基计划2.0 学习总结 伍 类的继承 初稿

文章目录 一、 继承1. 为什么要继承2. 如何继承3. 情况一:子父类成员变量重名4. 情况二:子父类成员方法重名5. 子父类构造方法问题6. 继承中代码块调用顺序7. protected关键字7. 继承方式8. final关键字9. 继承和组合 一、 继承 1. 为什么要继承 假设一…

长安链合约操作 查询合约命令解析

这个命令使用 ChainMaker 的 cmc 客户端工具查询智能合约 fact 的 find_by_file_hash 方法,通过文件哈希值检索链上存储的数据。以下是详细解析: 命令功能 调用合约 fact 的 查询方法 find_by_file_hash,根据文件哈希值 ab3456df5799b87c77…

嵌入式开发之STM32学习笔记day15

STM32F103C8T6 USART串口协议 1 通信接口 通信的目的:将一个设备的数据传送到另一个设备,扩展硬件系统通信协议:制定通信的规则,通信双方按照协议规则进行数据收发 名称 引脚 双工 时钟 电平 设备 USART TX、RX 全双工 …

Java版本的VPN(wlcn)1.3.1-JDK17-SNAPSHOT

项目介绍 wu-lazy-cloud-network 是一款基于(wu-framework-parent)孵化出的项目,内部使用Lazy ORM操作数据库,主要功能是网络穿透,对于没有公网IP的服务进行公网IP映射 使用环境JDK17 Spring Boot 3.0.2 版本更新 1…

javaweb 前言

Web的发展历史 Web的诞生 (1989-1991): 1989年,欧洲核子研究组织(CERN)的蒂姆伯纳斯-李提出了World Wide Web的概念,并发明了统一资源定位符(URL)、超文本传输协议(HTTP&#xff09…

<el-date-picker>配置禁用指定日期之前的时间选择(Vue2+Vue3)

今天突然接受到一个离谱的需求&#xff1a;有一个需要配置定时任务开始执行时间的组件&#xff0c;之前的做法都是用<el-form>的rules定义校验规则&#xff0c;也能实现效果&#xff0c;但是今天产品突发奇想&#xff1a;不能选的时间就置灰&#xff08;就是我们说的禁用…

Redis 主从节点

Redis 主从节点的核心区别 特性主节点 (Master)从节点 (Slave/Replica)读写权限可读可写只读&#xff08;默认配置&#xff09;数据流向数据来源从主节点同步数据连接关系可连接多个从节点只能连接一个主节点故障切换故障时需要手动/自动提升从节点可被提升为新的主节点命令执…

[NOIP 2001 普及组] 数的计算 Java

import java.util.*;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int n sc.nextInt();sc.close();int[] arr new int[n 1]; // 存储第i个数对应的合法数列数for (int i 1; i < n; i) {arr[i]; // 只有一个数n的数列…

【NATURE氮化镓】GaN超晶格多沟道场效应晶体管的“闩锁效应”

2025年X月X日,布里斯托大学的Akhil S. Kumar等人在《Nature Electronics》期刊发表了题为《Gallium nitride multichannel devices with latch-induced sub-60-mV-per-decade subthreshold slopes for radiofrequency applications》的文章,基于AlGaN/GaN超晶格多通道场效应晶…

Vue-Router 基础使用

Vue Router 是 Vue 官方的客户端路由解决方案。 客户端路由的作用是在单页应用 SPA 中将浏览器的 URL 和用户看到的内容绑定起来。当用户在应用中浏览不同页面时&#xff0c;URL 会随之更新&#xff0c;但页面不需要从服务器重新加载。 Vue Router 基于 Vue 的组件系统构建&a…