emqx4.4.3如何取消匿名登录,添加认证用户
emqx版本:4.4.3
背景:使用docker搭建完emqx后,使用 MQTTX 连接总是超时:
-
检查Java项目 是否有接口:https://XXXX:80/mqtt/auth?
-
若有,则具体逻辑查询该接口。(本文不具体讨论此场景)
-
若没有,往下看:
-
本人没有做这个接口,故需要关闭插件:
emqx_auth_http
-
-
又有问题了:连接没权限:
此报错说明没有认证的用户。(此报错的前提是取消了匿名登录)
emqx默认是可以匿名登录的,
etc/emqx.conf
:allow_anonymous=true
。
若需要取消,则设置:
- 新增认证用户:
需要开启插件:emqx_auth_mnesia
解决方法存在两种:
方式一:命令行:
-
docker 进入容器(本人是docker部署的)进入bin目录
-
emqx_ctl user list
查看当前认证用户列表 -
emqx_ctl user add admin 123456
添加用户查看用户列表:
./emqx_ctl user list
添加用户:./emqx_ctl user add <Username> <Password>
更新用户:./emqx_ctl user update <Username> <NewPassword>
删除:./emqx_ctl user delete <Username>
重启docker 后 即可生效(不重启好像也行?)。
参考:emqx增加用户认证功能_emqx5版本怎么添加客户端用户-CSDN博客
- 为什么人家的命令都是
emqx_ctl users list
?
猜测可能 我是emqx4.4.3 版本。人家是3.X
-
为啥登录 Dashboard的用户 不能用于连接emqx?
参见emqx mnesia认证 - EMQX - EMQ 问答社区- dashboard和emqx可以看作是两个独立的应用,dashboard上的那个创建的 user只是创建dashboard的用户
方式二:postman请求:
模拟发送HTTP请求,来创建用户等POST操作。
(GET操作 可以在Dashboard 直接请求,不用postman)
-
Authorization:来自登录或进入Dashboard 的请求接口头:
-
Body:添加的 连接emqx的用户
{
"username": "admin",
"password": "123456"
}
其他接口参照:Dashboard 的工具-HTTP接口
或:EMQX开启权限认证,添加用户名、密码认证–MQTT_emqx mnesia认证 不输入用户名密码也能登录-CSDN博客
Mnesia ACL | EMQX 4.4 文档