emqx配置文件中authentication报错

环境

  • EMQX 版本:5.3.0
  • 操作系统版本:CentOs7.9

重现此问题的步骤

  1. 配置文件的关于authentication的配置如下:
    authentication.1.enable = true
    authentication.1.mechanism = password_based
    authentication.1.backend = mysql
    authentication.1.server = “127.0.0.1:3806”
    authentication.1.database =
    authentication.1.username =
    authentication.1.password = “”
    authentication.1.password_hash_algorithm.name = sha256
    authentication.1.password_hash_algorithm.salt_position = disable
    authentication.1.pool_size = 8
    authentication.1.query = “SELECT password, salt FROM mqtt_user where username = ${username} LIMIT 1”

预期行为

正常启动

实际行为

报错:kind => validation_error,path => “authentication.1”,reason => “missing_mechanism_field”

您试过把中间的 1 去掉之后,mysql 认证功能可以正常工作对吗?

可能是文档有问题,我们修一下文档,谢谢!

对的,去掉之后是可以的

有个问题,是要去掉$INDEX吗?那样的话,我如何按照这个格式配置多种方式?

我理解你是只能配置一个 mysql 认证的,并且选择其 mechanism

我理解的是authentication是支持配置多种方式的吧,假设说,我要配置mysql + http,应该如何编写这个文件。类似这种?

试试这样:

authentication: [
{enable: true, backend: mysql, ...},
{enable: true, backend: http, ...}
]

这种方式可以,但是我还是想确认下扁平化的方式应该怎么写,扁平化的方式写部署的脚本的时候好用一些

array 好像是没有办法扁平化的。如果你是使用环境变量做配置修改的话,你可以直接在环境变量中配置一个 hocon 格式(就是我上面写那种结构)的值。