了解了 Clientid 认证后,现在我们再来了解下 Mysql 插件认证以及访问控制,默认关闭了匿名认证
一、创建用户表和控制表
根据官方文档,用户表的名称为:mqtt_user,访问控制表的名称为:mqtt_acl
mqtt_user
CREATE TABLE mqtt_user (
id int(11) unsigned NOT NULL AUTO_INCREMENT,
username varchar(8) DEFAULT NULL COMMENT 'mqtt用户名',
password varchar(12) DEFAULT NULL COMMENT 'mqtt密码',
salt varchar(20) DEFAULT NULL COMMENT '加盐随机变量',
is_superuser tinyint(1) DEFAULT 0 COMMENT '是否为超级用户: 0=否1=是',
create_time datetime DEFAULT NULL COMMENT '创建时间',
modify_time datetime DEFAULT NULL COMMENT '修改时间',
PRIMARY KEY (id),
UNIQUE KEY uk_username (username)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='mqtt用户表';
mqtt_acl
CREATE TABLE mqtt_acl (
id int(11) unsigned NOT NULL AUTO_INCREMENT,
allow int(1) DEFAULT NULL COMMENT '是否允许连接: 0=拒绝1=允许',
ipaddr varchar(60) DEFAULT NULL COMMENT 'mqtt客户端IP地址',
username varchar(8) NOT NULL COMMENT 'mqtt用户名',
clientid varchar(100) DEFAULT NULL COMMENT 'clientId',
access int(2) NOT NULL COMMENT '行为类型: 1=订阅2=发布3=订阅+发布',
topic varchar(100) NOT NULL DEFAULT '' COMMENT '主题',
create_time datetime DEFAULT NULL COMMENT '创建时间',
modify_time datetime DEFAULT NULL COMMENT '修改时间',
PRIMA