EMQX5.0使用Mysql认证,和Navicat Mysql数据库连接
在阿里云的服务器内安装好EMQX后,接下来使EMQX和Mysql数据库连接。
整体思路
首先我们先看一张流程图

流程图分为三部分:
第一部分:使Navicat Mysql可以连接到Ubuntu中的数据库
第二部分:使用EMQX控制台连接到Ubuntu中的的数据库
第三部分:使用MQTTX测试能否连接到EMQX控制台
第一步:阿里云服务器中配置Mysql5.7
我使用的是docker容器下载的mysql5.7镜像源,然后把mysql放到docker容器中运行。执行如下命令。
1.在Ubuntu中下载Docker
apt install docker.io
2.下载mysql5.7到Ubuntu中
docker pull mysql:5.73.查看下载的mysql镜像
docker images4.启动一个mysql容器
docker run --name my_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.75.查看启动的容器
docker ps
配置效果图如下

第二步,使用Navicat连接阿里云服务器中的Mysql 5.7
打开Navicat界面,左上角点击连接,选择MYSQL连接,按下图输入服务器公网IP和服务器中Mysql5.7的root用户和密码。随后去阿里云服务器的防火墙那里开放MySql3306端口。
双击连接好的数据库,看看是否能正常进入,正常进入是不会出现任何报错的。
第三步: EMQX控制台使用Mysql认证,连接阿里云服务器中的Mysql5.7
按照上一篇教程,在网页输入IP+18083,进入EMQX控制台,注意是EMQX5.0控制台,版本不同,控制台功能界面也不一样,在访问控制里,进入认证界面

点击右上角,创建一个认证

选择第一个,使用Passowrd-Based认证,点击下一步

选择Mysql数据源,我已经创建过Mysql认证了,不能再次选择

配置参数
数据库:刚才我们在Navicat中连接到了阿里云服务器中的Mysql5.7,填的就是,我们在这里面创建一个数据库

不出意外的话,这个时候你点击创建,会显示下面这个页面,一直在连接中

那是因为,还需要修改sql语句的关键字名称,原本的应该是password_hash,把它后面的_hash删掉就行了。密码加密方式和加盐方式也修改成下面,方便后续在MQTTX中使用Mysql5.7中创建的表格中的用户和密码连接EMQX,plain是明文不加密

更新一下,就显示认证成功了

第四步:在Navicat中创建用户表格
执行官方提供的创建表格命令,在Navicat中创建一个数据库,再在数据库中新建一个查询,将如下语句复制粘贴进去
DROP TABLE IF EXISTS `mqtt_acl`;CREATE TABLE `mqtt_acl` (`id` int(11) unsigned NOT NULL AUTO_INCREMENT,`allow` int(1) DEFAULT NULL COMMENT '0: deny, 1: allow',`ipaddr` varchar(60) DEFAULT NULL COMMENT 'IpAddress',`username` varchar(100) DEFAULT NULL COMMENT 'Username',`clientid` varchar(100) DEFAULT NULL COMMENT 'ClientId',`access` int(2) NOT NULL COMMENT '1: subscribe, 2: publish, 3: pubsub',`topic` varchar(100) NOT NULL DEFAULT '' COMMENT 'Topic Filter',PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;LOCK TABLES `mqtt_acl` WRITE;INSERT INTO `mqtt_acl` (`id`, `allow`, `ipaddr`, `username`, `clientid`, `access`, `topic`) VALUES(1,1,NULL,'$all',NULL,2,'#'),(2,0,NULL,'$all',NULL,1,'$SYS/#'),(3,0,NULL,'$all',NULL,1,'eq #'),(4,1,'127.0.0.1',NULL,NULL,2,'$SYS/#'),(5,1,'127.0.0.1',NULL,NULL,2,'#'),(6,1,NULL,'dashboard',NULL,1,'$SYS/#');UNLOCK TABLES;DROP TABLE IF EXISTS `mqtt_user`;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=MyISAM DEFAULT CHARSET=utf8mb4;
在表格中添加等会用于MQTTX测试的用户和密码,数据库名记得和EMQX认证Mysql中设置的数据库名一致,不一致的话去EMQX控制台那里改成和你创建的数据库名一样

第五步:使用MQTTX测试连接
设置连接,填入刚才在数据库中添加的用户和密码

连接后,会在EMQX控制台看到连接信息,把连接密码改错会显示有多少次错误连接,正确连接也会显示有多少次正确连接

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
