环境
- EMQX 版本:5.0.25
- 操作系统版本:docker
重现此问题的步骤
docker compose yaml文件
version: '3.9'
services:
emqx:
image: emqx/emqx:5.0.25
environment:
#EMQX_LOG_CONSOLE: "debug" # 默认为 warning
- EMQX_LOG__CONSOLE_HANDLER__ENABLE="true" # 默认为 false
- EMQX_LOG__CONSOLE_HANDLER__LEVEL="info" # 默认为 warning
# 启用 MySQL 认证
- EMQX_AUTHENTICATION__1='{mechanism="password_based",backend="mysql",server="host.docker.internal:3306",database="db",username="dbname",password="******",query="SELECT password_hash,salt FROM mqtt_user WHERE username=${username} LIMIT 1",enable=true}'
ports:
- "8083:8083"
- "18083:18083"
- "1883:1883"
networks:
default:
name: emqx5-dev
预期行为
看文档,以及搜索github官方文档得到的信息,均显示可以在环境变量中配置认证。但尝试各种写法均不行。开始以为是占位符${username}的问题。但看来应该不是。
实际行为
产生了这样的报错:
emqx-dev-emqx-1 | 2023-05-15T04:21:52.008062+00:00 [error] failed_to_check_schema: emqx_conf_schema
emqx-dev-emqx-1 | 2023-05-15T04:21:52.013483+00:00 [error] #{kind => validation_error,path => "authentication.1",reason => "not_a_struct",value => <<"'{mechanism=\"password_based\",backend=\"mysql\",server=\"host.docker.internal:3306\",database=\"db\",username=\"dbname\",password=\"******\",query=\"SELECT password_hash,salt FROM mqtt_user WHERE username= LIMIT 1\",enable=true}'">>}
emqx-dev-emqx-1 | ERROR: call_hocon_failed: -v -t 2023.05.15.04.21.50 -s emqx_conf_schema -c /opt/emqx/etc/emqx.conf -d /opt/emqx/data/configs generate
我先去研究引用配置文件的方法。 这个环境变量的配置,同步等待看有没有人成功。