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.7    

3.查看下载的mysql镜像
        docker images        

4.启动一个mysql容器
        docker run --name my_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d  mysql:5.7        

5.查看启动的容器
        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控制台看到连接信息,把连接密码改错会显示有多少次错误连接,正确连接也会显示有多少次正确连接

 

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值