emqx-auth-mysql

auth.mysql.server

TypeDefault
ip127.0.0.1:3306
说明

MySQL 服务器地址。

auth.mysql.pool

TypeDefault
integer8
说明

数据库连接线程池大小。

auth.mysql.username

TypeDefault
string-
说明

MySQL 用户名。

auth.mysql.password

TypeDefault
string-
说明

MySQL 密码。

auth.mysql.database

TypeDefault
stringmqtt
说明

MySQL 数据库名称。

auth.mysql.query_timeout

TypeDefault
duration5s
说明

MySQL 数据查询超时时间。查询超时将等同于未找到用户数据处理。

auth.mysql.auth_query

TypeDefault
stringselect password from mqtt_user where username = ‘%u’ limit 1
说明

认证时使用的 MySQL 选取语句,选取出来的数据将与经过由 auth.mysql.password_hash 指定的加密方式加密的密码进行比较,比较后内容一致的客户端将被允许登录。加盐后存储的密码需要同时选取盐对应的字段,例如 select password, salt from mqtt_user where username = '%u' limit 1passwordsalt 字段名不可以修改,表名与 WHERE 子句中的字段名可以视情况变化。WHERE 子句支持以下占位符:

占位符说明
%u将被替换为 MQTT 客户端在 CONNECT 报文中指定的用户名
%c将被替换为 MQTT 客户端在 CONNECT 报文中指定的客户端标识符
%C将被替换为 TLS 连接时客户端证书中的 Common Name
%d将被替换为 TLS 连接时客户端证书中的 Subject

auth.mysql.password_hash

TypeDefault
stringsh256
说明

存储在数据库的密码所使用的加密方式。支持以下加密方式:

  • plain,支持前后加盐,例如 salt,plain
  • md5,支持前后加盐
  • sha,支持前后加盐
  • sha256,支持前后加盐
  • sha512,支持前后加盐
  • pbkdf2,格式为 pbkdf2,<Hashfun>,<Iterations>,<Dklen>。其中,<Hashfun> 为使用的哈希函数,支持 md4md5ripemd160shasha224sha256sha384sha512<Iterations> 为迭代次数,<Dklen> 为导出密钥长度。示例:pbkdf2,sha256,1000,20
  • bcrypt,仅支持前向加盐,例如 salt,bcrypt

auth.mysql.super_query

TypeDefault
stringselect is_superuser from mqtt_user where username = ‘%u’ limit 1
说明

超级用户认证时使用的 SQL 选取语句,此语句中所有表名与字段名都可视情况修改,当且仅当选取得到字段的值为 1 时,该用户为超级用户。WHERE 子句中支持的占位符与 auth.mysql.auth_query 相同。

auth.mysql.acl_query

TypeDefault
stringselect allow, ipaddr, username, clientid, access, topic from mqtt_acl where ipaddr = ‘%a’ or username = ‘%u’ or username = ‘$all’ or clientid = ‘%c’
说明

ACL 校验时使用的 SQL 选取语句,此语句中所有表名与字段名都可视情况修改。WHERE 子句中支持的占位符如下:

占位符说明
%a将被替换为客户端 IP 地址
%u将被替换为 MQTT 客户端在 CONNECT 报文中指定的用户名
%c将被替换为 MQTT 客户端在 CONNECT 报文中指定的客户端标识符