创建数据库
你可以使用任何自己喜欢的 客户端,创建好相应的数据库。这里用的是 MySQL 自带的命令行客户端,打开 MySQL 的控制台,如下所示,创建一个名为 emqx 的认证数据库,并切换到 emqx 数据库。mysql> create database emqx;
Query OK, 1 row affected (0.00 sec)
mysql> use emqx;
Database changed
创建表
建议的表结构如下,其中,username 为客户端连接的时候指定的用户名,此处的值如果设置为 $all 表示该规则适用于所有的用户
password 为使用 salt 加密后的密文
salt 为加密串
is_superuser 是否为超级用户,用于控制 ACL,缺省为0;设置成 1 的时候为超级用户,可以跳过 ACL 检查数据表字段可以不用完全跟下面的一致,可以根据业务需要设置,通过 `emqx_auth_mysql.conf` 配置文件中的 `auth_query` 配置项来指定。

认证表:CREATE TABLE `mqtt_user` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`username` varchar(100) DEFAULT NULL,
`password` varchar(100) DEFAULT NULL,
`salt` varchar(35) DEFAULT NULL,
`is_superuser` tinyint(1) DEFAULT 0,
`created` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `mqtt_username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
进行身份认证时,EMQ X 将使用当前客户端信息填充并执行用户配置的认证 SQL,查询出该客户端在数据库中的认证数据。select password from mqtt_user where username = '%u' limit 1
字段说明%u:用户名
%c:clientid
%P:明文密码
%C:TLS 证书公用名(证书的域名或子域名),仅当 TLS 连接时有效
%d:TLS 证书 subject,仅当 TLS 连接时有效
可以根据业务需要调整认证
EMQ X MQTT 连接认证配置教程 - MySQL 版

本文介绍了如何配置 EMQ X 以使用 MySQL 进行 MQTT 连接认证,包括创建数据库和认证表,设置认证数据,修改插件配置以及启用认证功能。详细步骤涉及创建 `mqtt_user` 表,插入示例数据,配置 `emqx_auth_mysql.conf` 文件,并调整 EMQ X 配置以关闭匿名认证。
最低0.47元/天 解锁文章
407

被折叠的 条评论
为什么被折叠?



