You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Mosquitto动态安全创建角色失败:未授权连接错误

Mosquitto动态安全创建角色时提示"Not authorized"问题

问题描述

使用Mosquitto动态安全功能创建新角色时,始终报错:

Can't create new roles using mosquitto dynamic security Connection error: Not authorized

已尝试操作

  • 执行创建角色命令:
    mosquitto_ctrl -u myadmin -P admin333 dynsec createRole firstRole
    
  • 使用sudo执行命令:
    sudo mosquitto_ctrl -u myadmin -P <mypassword> dynsec createRole firstRole
    
  • 修改dynamic-security.json权限:设置全权限、将所有者改为root,均无效,仍报相同错误。

相关配置信息

  1. dynamic-security.json文件权限:
    -rw-r--r-- 1 mosquitto mosquitto 1247 Mar  6 06:51 dynamic-security.json
    
  2. 文件生成命令:
    sudo mosquitto_ctrl dynsec init /var/lib/mosquitto/dynamic-security.json myadmin
    
  3. mosquitto.conf配置内容:
    persistence true
    persistence_location /etc/mosquitto/data
    user mosquitto
    listener 1883
    per_listener_settings false
    allow_anonymous false 
    password_file /etc/mosquitto/conf.d/credentials
    log_dest file /etc/mosquitto/log/mosquitto.log
    log_dest stdout
    plugin /usr/lib/x86_64-linux-gnu/mosquitto_dynamic_security.so
    plugin_opt_config_file /usr/lib/x86_64-linux-gnu/dynamic-security.json
    

排查与解决方法

  1. 修正配置文件路径不匹配问题
    初始化dynamic-security.json时指定的路径是/var/lib/mosquitto/dynamic-security.json,但mosquitto.conf中plugin_opt_config_file指向的是/usr/lib/x86_64-linux-gnu/dynamic-security.json,路径不一致导致Mosquitto加载的不是包含myadmin账号的配置文件,直接引发授权失败。

    • 修改mosquitto.conf中的路径配置:
      plugin_opt_config_file /var/lib/mosquitto/dynamic-security.json
      
    • 重启Mosquitto服务:
      sudo systemctl restart mosquitto
      
  2. 确认管理员账号密码正确性
    初始化dynsec时会提示设置myadmin的密码,确保执行mosquitto_ctrl时使用的密码是当时设置的内容,而非自行假设的admin333。

  3. 恢复正确的文件权限
    将dynamic-security.json的所有者恢复为mosquitto用户,权限保持rw-r--r--即可,过高权限反而可能导致Mosquitto无法正常读写配置文件。

内容的提问来源于stack exchange,提问作者Danana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 03:52:37