规定通过mqtt_user表格验证过的用户才能连接EMQ服务器,我们需要开启mysql插件认证。EMQ2.0自带mysql插件,下面开始配置。

新建mqtt_user表格

要想控制用户登录EMQ,肯定是首先创建一个可管理的用户表格,规定只有在这个表格中的用户才能被允许连接EMQ。 按照EMQ官方文档在你mysql服务器中新建一个mqtt_user的表格(http://www.emqtt.com/docs/v2/guide.html#mysql)

CREATE TABLE `mqtt_user` (

`id` int(11) unsigned NOT NULL AUTO_INCREMENT,

`username` varchar(100) DEFAULT NULL,

`password` varchar(100) DEFAULT NULL,

`salt` varchar(20) DEFAULT NULL,

`is_superuser` tinyint(1) DEFAULT 0,

`created` datetime DEFAULT NULL,

PRIMARY KEY (`id`),

UNIQUE KEY `mqtt_username` (`username`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8;

关闭匿名登录

修改emq.conf(文件在你安装EMQ目录的./etc中)

$ vim /emqttd/etc/emq.conf // 编辑emq.conf

mqtt.allow_anonymous = false // 修改为false

配置、加载mysql插件

可以通过两种方式配置、加载mysql插件

命令行方式

修改emq_auth_mysql.conf(文件在你安装EMQ目录的./etc/plugins中)

$ vim /emqttd/etc/plugins/emq_auth_mysql.conf

修改如下配置

auth.mysql.server = MYSQL_SERVER_IP:PORT // mysql服务器地址,例如:127.0.0.1:3306

auth.mysql.username = USERNAME // mysql登录用户名

auth.mysql.password = PWD // mysql登录密码

auth.mysql.database = DATABASE_NAME // 默认使用库

加载mysql插件

$ /emqttd/bin/emqttd_ctl plugins load emq_auth_mysql

Web方式

EMQ默认开启一个web服务器用于可视化管理EMQ服务器(URL:18083),登录用户:admin、密码:public 找到 emq_auth_mysql 插件点击 配置

填写用户名、密码、ip、端口号、数据库名称

然后点击 确定 -> 启动

如果开启mysql插件报错,请自行查看EMQ日志,或者开启mysql服务器日志,大概率是mysql服务禁止访问。如果你是阿里云ECS,请设置ECS的安全组开启端口号3306出入网设置,或者检查服务器防火墙设置。如果依然报错,请设置mysql配置文件允许账户远程登录(这个可以上网搜下),如果都没问题,emq_auth_mysql插件启动成功,下面我们可以使用EMQ自带的Dashboard的web页面(也就是前面提到的URL:18083),找到 Websocket 填写任意账号测试能否连接EMQ服务器。

测试发现任意填写的用户、密码还是能连接上啊,我们mqtt_user中并没有任何用户记录,为什么还是能连接上,如果你EMQ服务器是先启动后配置mysql插件的话确实会出现这种情况,即使你使用重启命令重启EMQ服务器还是不行。

$ /emqttd/bin/emqttd restart

你必须先关闭EMQ,再启动EMQ,mysql插件才会生效(这个官方文档并没有说明,大坑啊)。

$ /emqttd/bin/emqttd stop

$ /emqttd/bin/emqttd start

测试

然后我们往mqtt_user中新增一条用户 username: 'admin' (用户名) password: '03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4' (密码'1234'的sha256加密字符)

因为mysql插件中读取出的密码会和明文传递的密码的sha256加密字符比较,这个可以通过配置emq_auth_mysql.conf修改。

insert into mqtt_user (`username`, `password`) values ('admin', '03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4');

然后测试 OK

emq无法启用mysql_EMQ开启mysql认证相关推荐

  1. emqtt mysql认证_Emqtt -- 05 -- Mysql插件认证及访问控制

    了解了 Clientid 认证后,现在我们再来了解下 Mysql 插件认证以及访问控制,默认关闭了匿名认证 一.创建用户表和控制表 根据官方文档,用户表的名称为:mqtt_user,访问控制表的名称为 ...

  2. mod auth mysql_Apache使用mysql认证用户

    使用MySQL进行认证 第1步:下载MySQL认证模块,并更名为mod_auth_mysql.so文件,并保存在apache的modules目录下 第2步:apache要加载此功能模块 LoadMod ...

  3. svn mysql认证_SVN基于MySQL认证

    SVN的简介和工作原理 Subversion(简称svn)是近几年崛起的版本管理软件,是cvs的接班人,目前绝大多数开源软件都使用svn作为代码版本管理软件.Subversion支持linux和win ...

  4. svn基于mysql认证_Svn基于mysql做登陆认证

    不做权限控制的登陆认证 基础环境 Centos 6 Apache 2.2 Svn 1.6 Mysql 5.1 yum -y install mysql mysql-devel mysql-server ...

  5. emq认证mysql后如何使用_emq服务器开启mysql验证教程

    在上一篇博客中我们写了ubuntu16.04中安装emq服务器教程的,当我们安装好zip的emq服务器之后.在emqttd目录下的emq文件夹中,有emq.conf 文件夹.vim emq.conf ...

  6. emq+mysql设置_EMQ--添加mysql认证及mysql插件访问控制

    EMQ-百万级分布式开源物联网MQTT消息服务器. MQTT 认证设置 EMQ 消息服务器认证由一系列认证插件(Plugin)提供,系统支持按用户名密码.ClientID 或匿名认证. 系统默认开启匿 ...

  7. emq插件开发mysql_EMQ的Mysql插件

    EMQ最新版的是EMQX3.x.x版本,一如既往的支持Mysql认证,这里专门对Mysql认证插件做个研究,写点总结.本人能力有限,文章不足之处希望及时反馈以免误导. 首先我先描述一下我的应用场景:我 ...

  8. <物联网>emqx服务器关闭匿名认证并开启ClientId认证

    文章目录 一.前言 二.知识储备 三.设置认证 1.开启ClientId认证 2.关闭匿名认证 3.其他认证方式 闲谈 一.前言 EMQX服务器默认情况是允许任意客户端接入的(只要获得服务器IP地址和 ...

  9. 支持第三方认证用户开启MFA认证流程,支持工单申请Redis数据库应用,JumpServer堡垒机v2.19.0发布

    2022年2月21日,JumpServer开源堡垒机正式发布v2.19.0版本.在这一版本中,JumpServer新增支持第三方认证用户开启MFA认证流程,满足了更多用户对于账号安全性的需求.同时,支 ...

最新文章

  1. Facebook开源最大规模并行语料,45亿语料,覆盖576种语言对
  2. 100年前没人信他,但他仅1项研究便远程摧毁万架飞机……
  3. 深度学习的150多篇文章和10多个专栏推荐
  4. Stream流终结操作方法
  5. 抽屉效果_宜家靠边,好用不贵的全格收纳抽屉使用感受
  6. 打印三角形之细节讲解
  7. 集成 websocket 的四种方案
  8. C#开发笔记之22-C#中的int、long、float、double等类型都占多少个字节的内存。
  9. 【路径规划】基于matlab改进的蚁群算法路径规划【含Matlab源码 335期】
  10. 计算机新建没有文本文档,我的电脑新建文本文档没有显示TXT,为什么?
  11. Appium+python自动化(二十六)- 烟花一瞬,昙花一现 -Toast提示(超详解)
  12. Python 定时任务的几种实现方式
  13. 一句话教你认出世界名画作者!
  14. mysql外文文献中英文3千字_MySQL数据库管理外文中英文翻译文献.doc
  15. namecheap mx记录配置邮箱
  16. 高处的圣地 --读《消失的地平线》
  17. B站首页(推荐页)分析
  18. Hilt Test 短篇:插入辅助测试,插这插那,操家伙,看飞刀。——对面那位接着:memory 做的 *……()……*
  19. C++ Learning 3
  20. 远程调用中间件(RPC)

热门文章

  1. boot的时候无法进入BIOS,无法使用键盘
  2. Linux 配置php
  3. word图文混排复制到CuteEditor图片不显示
  4. linux永久开放端口
  5. 以太坊开发入门,完整入门篇(小白可以看看,高手看看自己有没有遗漏的
  6. 查看Linux服务器内存和cpu核数
  7. MariaDB Galera Cluster 集群部署
  8. AD15 原理图更新为PCB图遇到的错误及解决办法(footprint not found;unknown pin)
  9. cmd查看历史操作命令
  10. 将Xbox360连接到Mac