重启服务器或重启docker,导致emqx的Dashboard的密码重置为public

文章介绍了如何在Docker中部署EMQX,通过设置`EMQX_NODE_NAME`环境变量避免Dashboard密码重置,并解决授权信息在重启后恢复默认的问题,方法是将自定义授权内容保存在data/authz/acl.conf中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在项目中突然发现重启服务器,或者重启docker 修改好的emqx的Dashboard的密码重置为public
技术博客 http://idea.coderyj.com/

1.解决办法就是固定 emqx的节点

# 拉取镜像
docker pull emqx/emqx
 
# 创建目录,进行目录挂载
mkdir -p /docker/emqx/{etc,lib,data,log}
 
# 运行一个demo
docker run -d --name emqx emqx/emqx
 
# 将demo中的文件拷贝出来
docker cp emqx:/opt/emqx/etc /docker/emqx
docker cp emqx:/opt/emqx/lib /docker/emqx
docker cp emqx:/opt/emqx/data /docker/emqx
docker cp emqx:/opt/emqx/log /docker/emqx

# 正式运行
docker run -d --name emqx --restart=always \
-p 1883:1883 \
-p 8883:8883 \
-p 8083:8083 \
-p 8084:8084 \
-p 8081:8081 \
-p 18083:18083 \
-v /etc/localtime:/etc/localtime \
-v /docker/emqx/etc:/opt/emqx/etc \
-v /docker/emqx/lib:/opt/emqx/lib \
-v /docker/emqx/data:/opt/emqx/data \
-v /docker/emqx/log:/opt/emqx/log \
-e EMQX_NODE_NAME=emqx@node \
emqx/emqx

上述重点是加上 -e EMQX_NODE_NAME=“随便取个名字”。用这个环境变量固定 EMQX 节点名称,加上以后Dashboard密码就不会重置。

2.emqx授权重启被重置

  • 安装好emqx后,配置Dashboard密码、配置授权信息后。重启服务器,再次打开Dashboard。Dashboard密码没有再出现重置问题。但是授权信息仍然会恢复成默认。
  • 进入到 /docker/emqx/etc挂载目录下查看,看到emqx.confacl.conf
    在这里插入图片描述
  • 查看acl.conf文件
    在这里插入图片描述
  • 再看emqx.conf文件的最后部分
    在这里插入图片描述

也就是说,acl.conf是默认的授权文件,如果自定义了授权内容,授权内容会保存在data/authz/acl.conf,并且用这个文件作为授权文件。现在问题是服务器重启后,emqx重新使用了默认文件,那直接把自定义的授权内容直接写在默认的acl.conf文件不就可以了?
实践后发现,这个简单粗暴的方法可行!至此,问题解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值