在阿里云的服务器内安装好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控制台看到连接信息,把连接密码改错会显示有多少次错误连接,正确连接也会显示有多少次正确连接