EMQX 开启 **MySQL + password_based** 认证

我给你最简单、一步到位、直接能用 的 EMQX + MySQL 密码认证 插入用户SQL,你复制执行就能让大疆机场连接 MQTT。

一、先说结论

EMQX 开启 MySQL + password_based 认证后,往 MySQL 里插入用户只需要一条 INSERT

关键只有 3 个字段:

  • username
  • password
  • salt(留空即可)
  • is_superuser(0 就行)

二、你只需要执行这条 SQL(直接复制)

sql 复制代码
INSERT INTO mqtt_user (username, password, salt, is_superuser)
VALUES ('你的MQTT用户名', '你的MQTT密码', '', 0);

真实可测试例子(大疆机场直接能用)

sql 复制代码
INSERT INTO mqtt_user (username, password, salt, is_superuser)
VALUES ('dock_user_001', 'X9B27sK4pR5zQ3vG7tN1dF8hJ0k001', '', 0);

执行完 → 大疆机场立刻就能用这个账号密码连接 EMQX


三、必须确认 EMQX 配置(和我这个一致才有效)

打开 EMQX 的认证配置:
etc/plugins/emqx_auth_mysql.conf

确保这 3 项配置 和我一样

复制代码
auth.mysql.password_hash = plain
auth.mysql.auth_query = select password from mqtt_user where username = '%u' limit 1
auth.mysql.password_based = on
  • password_hash = plain → 密码明文存储
  • auth_query → 查密码
  • password_based = on → 开启密码认证

这样你直接插入明文密码就能用,最适合大疆机场对接。


四、如果你想批量生成用户(直接运行)

sql 复制代码
-- 生成10个大疆机场可用的MQTT账号
INSERT INTO mqtt_user (username, password, salt, is_superuser)
VALUES
('dock_001', 'pwd_001ABC', '', 0),
('dock_002', 'pwd_002ABC', '', 0),
('dock_003', 'pwd_003ABC', '', 0);

五、验证是否生效

  1. 重启 EMQX 插件
bash 复制代码
emqx_ctl plugins reload emqx_auth_mysql
  1. 用MQTT工具测试连接
  • 地址:你的IP
  • 端口:1883
  • 用户名:dock_user_001
  • 密码:X9B27sK4pR5zQ3vG7tN1dF8hJ0k001

能连上 = 成功


六、超级精简总结

EMQX MySQL 密码认证 =
往 mqtt_user 表插入 username + password 明文即可

不需要加密

不需要salt

不需要复杂配置


相关推荐
今天AI了吗3 小时前
Python 基础语法(一):常量、变量、输入输出与运算符
开发语言·数据库·人工智能·python·sql·深度学习·机器学习
夜雪一千4 小时前
MySQL 全局锁是什么?原理、风险、备份踩坑完整实战
android·mysql·adb
lilian2334 小时前
Harmony os 技术实战|拼豆制图27:用单字符编码承载 50 张 70×70 图纸
前端·数据库·华为·harmonyos
皮卡丘不断更5 小时前
手机优先的 Personal Ledger:把账目、学习和复盘放到同一个入口
数据库·sqlite·fastapi·开源项目·个人效率
保卫大狮兄6 小时前
设备管理从台账到报废,完整生命周期一次讲清
数据库·设备管理·设备
数据安全技术观察6 小时前
数据动态脱敏:让脱敏策略跟着数据目录走
大数据·网络·数据库
小席是个热心肠7 小时前
Redis的自我学习
数据库·redis·学习
2601_965798477 小时前
Salient Theme Setup Guide for Fast Creative WordPress Sites
数据库·web3·php·wordpress
@Mike@8 小时前
09-数据库学习笔记(数据库索引与过滤器)
数据库·笔记
程序员夏洛9 小时前
MySQL 中 count(*)、count(1) 和 count(字段名) 有什么区别?
数据库·mysql