采用emqx搭建mqtt服务器,基于主题(topic)的发布订阅模式。在线上项目中使用,肯定要进行动态的认证和topic权限鉴权,动态管理连接emqx的用户名和密码,以及用户对应的主题权限,本文采用外接mysql形式进行用户管理。 二、开启插件前准备好数据库 在mysql中创建好插件所需要的的表用户表和acl权限表(默认用户表为‘mqtt_user...
CREATETABLE`mqtt_user`(`id`int(11)unsignedNOTNULLAUTO_INCREMENT,`username`varchar(100)DEFAULTNULL,`password_hash`varchar(100)DEFAULTNULL,`salt`varchar(35)DEFAULTNULL,`is_superuser`tinyint(1)DEFAULT0,`created`datetimeDEFAULTNULL,PRIMARYKEY(`id`),UNIQUEKEY`mqtt_username`(`username`))ENGINE=InnoDB...
有些端口是EMQX为了实现集群而内部添加的,所以不需要把所有端口都添加到入网规则里面,我们只需要放开dashboard和8883就可以了,dashboard是监控的前端展示,可以让我们查看当前服务器的运行状态,信息很全面,而8883是MQTT使用TLS通信加密的端口,这里暂时不放开明文的端口。如果有通过Websocket访问的场景后续再放开端口8084也行...
mqtt.allow_anonymous = false 启用emq_auth_username 插件(不启用则mqtt.allow_anonymous = false不生效): ./bin/emqttd_ctl plugins load emq_auth_username 两种方式添加用户(管理员只能通过命令添加): 直接在 etc/plugins/emq_auth_username.conf 中明文配置默认用户例如: auth.user.1.username = hthl_pub...
## 修改为实际 mysql 所在的服务器地址auth.mysql.server = localhost:3306## 修改为上面创建成功的 emqx 数据库auth.mysql.database = emqx## 连接认证查询语句auth.mysql.auth_query = SELECT password_hash AS password, salt FROM mqtt_user WHERE username ='%u'## 加密算法 plain | md5 | sha | sha...
注意:5.0 的表结构和 4.0不兼容,先建 mqtt数据库 + mqtt_user表 CREATETABLE`mqtt_user` ( `id`int(11) unsignedNOTNULLAUTO_INCREMENT, `username`varchar(100)DEFAULTNULL, `password_hash`varchar(100)DEFAULTNULL, `salt`varchar(35)DEFAULTNULL, ...
mysql>INSERT INTOmqtt_user(username, password_hash, salt, is_superuser)VALUES('emqx_u', SHA2(concat('public','slat_foo123'),256),'slat_foo123',0);Query OK,1rowaffected (0,01sec) 对应的查询语句和密码散列方法配置参数为: 密码加密方式:sha256 ...
{"select password,salt from mqtt_user where username = ? limit 1", ["'%u'"]}, hash_type => {plain,salt}, pool => 'emqx_module_auth_mysql:module:90b76698', super_query => {"select is_superuser from mqtt_user where username = ? limit 1", ...
是因为我配置了mysql,但是如何改heeejianbo 2024 年4 月 15 日 00:29 2 从日志看是由于,配置了 mysql 认证的 SQL 语句为 SELECT password FROM mqtt_user where username = ? LIMIT 1 但,你配置的 mysql 地址,不存在 mqtt_user 这个表,所以报错了: Table ‘mysql.mqtt_user’ doesn’t exist首页...
在这个示例中,我们将尝试创建一个插件,它可以用一个特殊的规则来增强 EMQX 的访问控制:客户端只能订阅与模式 msg/{{user-id}}/whatever 相匹配的主题,其中 {{user-id}} 是从MQTT 客户端 ID 中截取出来的。 在我们开始之前,有必要提一下,EMQX 有很多内置的访问控制(授权)解决方案,因此通常没有必要再开发一...