这里以MySQL认证为例,其他数据库认证同理即可:
一、安装MySQL
以docker为例:
拉取 MySQL 镜像
这里我们拉取官方的最新版本的镜像:
$ docker pull mysql:latest
运行容器:
$ docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
参数说明:
-p 3306:3306 :映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主机ip:3306 访问到 MySQL 的服务。
MYSQL_ROOT_PASSWORD=123456:设置 MySQL 服务 root 用户的密码。
二、创建模块
打开 EMQX Dashboard (opens new window),点击左侧的 “模块” 选项卡,选择添加:
需要配置MySQL的地址,用户名,密码(可选)等基本连接参数表,这里我加密方式我以sha256+salt为例:
注:加盐规则,默认在用户名/密码SQL认证语句中是没有的,需自己添加进去!!!
最后点击“添加”按钮,模块即可添加成功:
三、创建认证表
##创建数据库 create database mqtt; ##切换数据库 use mqtt; ##创建认证表 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;
插入一条示例数据如下:
其中password是由密码public加上salt为test拼接在一起的字符串为publictest进行sha256加密得到的,如图:
验证
启用 MySQL 认证后,你可以通过用户名: emqx,密码:public 连接。