emq与mysql_EMQ X 基于 MySQL 的 MQTT 连接认证

本文介绍了如何配置EMQ X broker以使用MySQL数据库进行MQTT连接认证。步骤包括创建数据库和认证表,设置表结构,插入认证数据,并在EMQ X的配置文件中启用MySQL认证功能。此外,还提到了访问控制和超级用户的实现方法。
摘要由CSDN通过智能技术生成

EMQ X 基于 MySQL 的 MQTT 连接认证2020-12-28 12:52:52

c583571ef6f357347c48165be3e0fc40.png 创建数据库

你可以使用任何自己喜欢的 客户端,创建好相应的数据库。这里用的是 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 证书公用名(证书的域名或子

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值