TechBlog
首页分类标签搜索关于

© 2025 TechBlog. All rights reserved.

EMQX-5.8.6-客户端认证实战内置数据库的高效配置指南

11/22/2025
未分类#数据库#Mqtt#Emqx

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、用户名、密码等)。其认证流程遵循「请求校验-数据查询-结果比对」的逻辑:

  1. 客户端发起连接:客户端通过MQTT协议发起连接请求,携带客户端ID(Client ID)、用户名(Username)、密码(Password)等认证信息。
  2. 认证触发:EMQX接收到连接请求后,根据预设的认证规则,触发内置数据库认证流程。
  3. 数据查询与比对:EMQX从内置数据库中查询与请求中客户端ID或用户名匹配的认证记录,将请求中的密码(经过加密处理后)与数据库中存储的加密密码进行比对。
  4. 认证结果反馈:若比对成功,允许客户端连接;若比对失败(如密码错误、无匹配记录),则拒绝连接并返回对应的错误码。

EMQX 5.8.6版本对内置数据库认证进行了细节优化,支持多种密码加密算法(如bcrypt、sha256、md5等),并强化了认证缓存机制,进一步提升了认证效率。

三、实操:内置数据库认证配置全流程

下面将以EMQX 5.8.6版本的Dashboard为例,带大家一步步完成内置数据库认证的配置、测试与管理。

3.1 前提条件

  • 已成功安装EMQX 5.8.6版本(支持Docker、二进制包、K8s等多种部署方式)。
  • 已通过浏览器访问EMQX Dashboard(默认地址:http://localhost:18083,默认账号:admin,默认密码:public)。
    在这里插入图片描述
  • 确保客户端(如MQTTX、Python MQTT客户端等)能与EMQX服务器正常网络通信。
    在这里插入图片描述

3.2 步骤1:创建内置数据库认证规则

  1. 进入客户端认证配置页面:登录Dashboard后,点击左侧导航栏「访问控制」→「客户端认证」,进入客户端认证管理页面。
    在这里插入图片描述
  2. 添加认证方式:点击页面右上角「创建」按钮,在弹出的「创建认证」对话框中,选择「内置数据库」作为「认证方式」,点击「下一步」。
    在这里插入图片描述
  3. 配置认证核心参数:
    (1) 账号类型:支持「密码认证」和「客户端ID认证」,可根据需求选择(建议选择「密码认证」,安全性更高)。
    (2) 密码加密算法:选择合适的加密算法(推荐bcrypt,安全性高;若需兼容旧系统,可选择sha256、md5等)。注意:客户端密码需与所选算法一致进行加密后存储。
    (3)加盐方式:指在密码加密前,额外拼接一段随机生成的字符串(盐值) ,再对 “密码 + 盐值” 的组合进行加密的安全机制。即使多个客户端用相同明文密码,因盐值随机,最终存储的密文也完全不同。当前选择 disable(先禁用掉不用加盐)
    在这里插入图片描述
  4. 完成创建:参数配置完成后,点击「创建」按钮,即可生成内置数据库认证规则,此时规则状态为「启用」。
    在这里插入图片描述
  5. 点击 “用户管理” 进行创建用户
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

3.2 步骤2:认证效果测试

使用MQTTX客户端测试认证效果,确保配置生效:

  1. 创建MQTT连接:打开MQTTX,点击「+」号创建新连接,配置:
    名称:自定义(如「内置数据库认证测试」)。
    在这里插入图片描述
    上述截图中,没有填写账号&密码,直接点击“连接”按钮,会有提示如下:
    在这里插入图片描述
    然后,给用户&密码配置一下,填写认证管理创建的账号信息:
    testuser/123456 ,在点击“连接”按钮,认证信息成功:
    在这里插入图片描述
  2. 订阅消息/发送消息
    认证信息登录成功后,订阅 testtop 进行功能测试。
    在这里插入图片描述
    在这里插入图片描述
    消息可以正常发送/接收。