Bootstrap

EMQX Mysql认证

EMQX Mysql认证

一、EMQ X 客户端登陆认证介绍

身份认证是大多数应用的重要组成部分,MQTT 协议支持用户名密码认证,启用身份认证能有效阻止非法客户端的连接。

EMQ X 中的认证指的是当一个客户端连接到 EMQ X 的时候,通过服务器端的配置来控制客户端连接服务器的权限。

EMQ X 的认证支持包括两个层面:

MQTT 协议本身在 CONNECT 报文中指定用户名和密码,EMQ X 以插件形式支持基于 Username、ClientID、HTTP、JWT、LDAP 及各类数据库如 MongoDB、MySQL、PostgreSQL、Redis 等多种形式的认证。
在传输层上,TLS 可以保证使用客户端证书的客户端到服务器的身份验证,并确保服务器向客户端验证服务器证书。也支持基于 PSK 的 TLS/DTLS 认证。
在这里插入图片描述

二、关于MySQL认证

MySQL 认证使用外部 MySQL 数据库作为认证数据源,可以存储大量数据,同时方便与外部设备管理系统集成。

三、使用MySql认证

3.1、环境安装(安装Mysql)

3.2、创建数据库和数据表

1)创建数据库

CREATE USER emqx@'%' IDENTIFIED  WITH mysql_native_password BY 'public';
-- 创建数据库
create DATABASE IF NOT EXISTS emqx DEFAULT charset utf8mb4;
-- 授权
GRANT create,insert,select,update,delete,drop ON emqx.* TO emqx@'%';

2)创建数据表

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;

3.3、插件配置

1)找到MySql配置文件【进入EMQX安装路径下的etc\plugins找到emqx_auth_mysql.conf】

2)修改配置信息

## 服务器地址
auth.mysql.server = 127.0.0.1:3306
 
## 连接池大小
auth.mysql.pool = 8
## 登录名
auth.mysql.username = emqx
## 登录密码
auth.mysql.password = public
## 数据库名
auth.mysql.database = emqx
 
auth.mysql.query_timeout = 5s
 
auth.mysql.password_hash = sha256,salt
auth.mysql.auth_query = select password,salt from mqtt_user where username = '%u' limit 1

3)启用MySql认证插件【可以使用管理后台启用也可以使用命令行启用】

管理后台:(默认后台账号密码:admin/public)
在这里插入图片描述
命令行:
在这里插入图片描述

;