我给你最简单、一步到位、直接能用 的 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);
五、验证是否生效
- 重启 EMQX 插件
bash
emqx_ctl plugins reload emqx_auth_mysql
- 用MQTT工具测试连接
- 地址:你的IP
- 端口:1883
- 用户名:dock_user_001
- 密码:X9B27sK4pR5zQ3vG7tN1dF8hJ0k001
能连上 = 成功
六、超级精简总结
EMQX MySQL 密码认证 =
往 mqtt_user 表插入 username + password 明文即可
不需要加密
不需要salt
不需要复杂配置