EMQX 5.8.6 客户端认证实战:内置数据库的高效配置指南
[
新星杯·14天创作挑战营·第17期
10w+人浏览
436人参与
](https://activity.csdn.net/writing?id=11028)
EMQX 5.8.6 客户端认证实战:内置数据库的高效配置指南
在MQTT消息服务器的部署与运维中,客户端认证是保障消息安全的第一道防线。EMQX作为开源物联网消息中间件的佼佼者,其访问控制模块提供了丰富的认证方式。本文将聚焦EMQX 5.8.6版本,深入解析「访问控制-客户端认证」中的内置数据库认证方案,带大家从功能认知到实操配置,快速掌握这一轻量高效的认证方式。
EMQX 安装,参考《Docker 快速部署 EMQX:MQTT Broker 从安装到运维全指南》
一、为什么选择内置数据库认证?
EMQX的客户端认证支持内置数据库、MySQL、PostgreSQL、Redis等多种数据源,其中内置数据库认证凭借其独特优势,在特定场景下成为首选:
- 零依赖部署:无需额外搭建和维护第三方数据库,安装EMQX后即可直接使用,极大简化了小型部署或测试环境的搭建流程。
- 轻量高效:内置数据库采用本地存储,减少了网络通信开销,认证响应速度更快,能满足中小规模物联网场景的性能需求。
- 配置便捷:通过EMQX Dashboard可视化操作即可完成配置,无需编写复杂的SQL语句或脚本,对新手友好。
- 兼容性保障:与EMQX版本深度适配,不存在第三方数据库的版本兼容问题,升级维护更省心。
需要注意的是,内置数据库更适合客户端数量较少(建议不超过10000个)的场景,如小型物联网项目、测试环境或边缘设备部署。若客户端规模较大,建议搭配Redis、MySQL等分布式数据库使用。
二、EMQX 5.8.6 内置数据库认证核心原理
EMQX内置数据库本质是一个轻量级的本地KV存储,专门用于存储客户端认证所需的核心信息(如客户端ID、用户名、密码等)。其认证流程遵循「请求校验-数据查询-结果比对」的逻辑:
- 客户端发起连接:客户端通过MQTT协议发起连接请求,携带客户端ID(Client ID)、用户名(Username)、密码(Password)等认证信息。
- 认证触发:EMQX接收到连接请求后,根据预设的认证规则,触发内置数据库认证流程。
- 数据查询与比对:EMQX从内置数据库中查询与请求中客户端ID或用户名匹配的认证记录,将请求中的密码(经过加密处理后)与数据库中存储的加密密码进行比对。
- 认证结果反馈:若比对成功,允许客户端连接;若比对失败(如密码错误、无匹配记录),则拒绝连接并返回对应的错误码。
EMQX 5.8.6版本对内置数据库认证进行了细节优化,支持多种密码加密算法(如bcrypt、sha256、md5等),并强化了认证缓存机制,进一步提升了认证效率。
三、实操:内置数据库认证配置全流程
下面将以EMQX 5.8.6版本的Dashboard为例,带大家一步步完成内置数据库认证的配置、测试与管理。
3.1 前提条件
3.2 步骤1:创建内置数据库认证规则
- 进入客户端认证配置页面:登录Dashboard后,点击左侧导航栏「访问控制」→「客户端认证」,进入客户端认证管理页面。

- 添加认证方式:点击页面右上角「创建」按钮,在弹出的「创建认证」对话框中,选择「内置数据库」作为「认证方式」,点击「下一步」。

- 配置认证核心参数:
(1) 账号类型:支持「密码认证」和「客户端ID认证」,可根据需求选择(建议选择「密码认证」,安全性更高)。
(2) 密码加密算法:选择合适的加密算法(推荐bcrypt,安全性高;若需兼容旧系统,可选择sha256、md5等)。注意:客户端密码需与所选算法一致进行加密后存储。
(3)加盐方式:指在密码加密前,额外拼接一段随机生成的字符串(盐值) ,再对 “密码 + 盐值” 的组合进行加密的安全机制。即使多个客户端用相同明文密码,因盐值随机,最终存储的密文也完全不同。当前选择 disable(先禁用掉不用加盐)

- 完成创建:参数配置完成后,点击「创建」按钮,即可生成内置数据库认证规则,此时规则状态为「启用」。

- 点击 “用户管理” 进行创建用户



3.2 步骤2:认证效果测试
使用MQTTX客户端测试认证效果,确保配置生效:
- 创建MQTT连接:打开MQTTX,点击「+」号创建新连接,配置:
名称:自定义(如「内置数据库认证测试」)。

上述截图中,没有填写账号&密码,直接点击“连接”按钮,会有提示如下:

然后,给用户&密码配置一下,填写认证管理创建的账号信息:
testuser/123456 ,在点击“连接”按钮,认证信息成功:

- 订阅消息/发送消息
认证信息登录成功后,订阅 testtop 进行功能测试。


消息可以正常发送/接收。