规定通过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认证的更多相关文章

  1. Apache使用mysql认证用户

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

  2. MySQL开启SSL认证,以及简单优化

    1.1 MySQL开启SSL认证 #生成一个 CA 私钥 [root@db01 ssl]# openssl genrsa 2048 > ca-key.pem Generating RSA pri ...

  3. EMQ -- 用户密码认证

    emq 的用户密码认证 MQTT 认证设置 EMQ 消息服务器认证由一系列认证插件(Plugin)提供,系统支持按用户名密码.ClientID 或匿名认证. 系统默认开启匿名认证(anonymous) ...

  4. OPENVPN+MYSQL认证+客户端配置

    安装环境:ubuntu 12.04 x64 一 服务器端 1.安装openvpn及相应包 1 2 root@jkb:~# aptitude install openvpn root@jkb:~# ap ...

  5. Docker Mongo数据库开启用户认证

    一.启动mongo容器的几种方式 #简化版 docker run --name mongo1 -p 21117:27017 -d mongo --noprealloc --smallfiles #自定 ...

  6. kali 开启Mysql设置远程连接管理

    环境工具 kali2020.01 192.168.177.137 windows10物理机heidiSQL工具下载地址 https://www.heidisql.com/download.php 开启 ...

  7. Linux/CentOS下开启MySQL远程连接,远程管理数据库

    当服务器没有运行PHP.没装phpMyAdmin的时候,远程管理MySQL就显得有必要了. 第一步:开启MySQL用户的远程访问权限 mysql -u root -p mysql # 第1个mysql ...

  8. Host 'XXX' is not allowed to connect to this MySQL server 解决方案/如何开启MySQL的远程帐号

    www.cnblogs.com/zhangzhu/archive/2013/08/22/3274831.html 如何开启MySQL的远程帐号-1)首先以 root 帐户登陆 MySQL 在 Wind ...

  9. 开启 mysql 远程访问

    如何开启MySQL的远程帐号-1)首先以 root 帐户登陆 MySQL 在 Windows 主机中点击开始菜单,运行,输入“cmd”,进入控制台,然后cd 进入MySQL 的 bin 目录下,然后输 ...

随机推荐

  1. MagicalRecord使用教程【转载】

    原文地址:http://www.ithao123.cn/content-96403.html 下面是在xcode5.1下ARC环境中的使用教程 1. 将 MagicalRecord 文件夹拖入到工程文 ...

  2. windows下如何快速优雅的使用python的科学计算库?

    Python是一种强大的编程语言,其提供了很多用于科学计算的模块,常见的包括numpy.scipy.pandas和matplotlib.要利用Python进行科学计算,就需要一一安装所需的模块,而这些 ...

  3. python学习(六)元组学习

    元组就是列表的一种,不过元组具有不可变性,而且是用圆括号访问的. 索引(下表索引或者键索引都是用的中括号) #!/usr/bin/python # 这节来学习元组, tuple, 基本上就像一个不可以 ...

  4. Idftp.DirectoryListing 里面的内容为什么会是空的呢?(转)

    最近在项目中要用到FTP上传,用的是delphi的IdFTP控件,用IdFtp.List(list),发现List里面有内容,可 是到IdFtp.DirectoryListing.Items[iCou ...

  5. 导入MySQL测试数据库employee报错

    导入MySQL测试数据库employee 报错 下载地址:https://launchpad.net/test-db/ 上传解压: [root@001 ~]# tar xf employees_db- ...

  6. Azure、数据、AI开发工具

    Azure.数据.AI开发工具 在今天召开的 Connect(); 2017 开发者大会上,微软宣布了 Azure.数据.AI 开发工具的内容.这是第一天的 Connect(); 2017 的主题演讲 ...

  7. cocos2d-x AssetsManager libcurl使用心得

    libcurl使用心得 最新正在写cocosclient更新的逻辑.研究了一下cocos2d-x自带的Libcurl,下面是自己在使用过程中的心得和遇到的未解问题.希望大家一起讨论一下,欢迎大家指导. ...

  8. python scrapy爬虫框架

    http://scrapy-chs.readthedocs.io/zh_CN/0.24/intro/tutorial.html scrapy 提取html的标签内容 from scrapy.selec ...

  9. KVC基本使用

    首先,创建两个类.person类和book类.如图: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/ ...

  10. [转] 盘点8种CSS实现垂直居中水平居中的绝对定位居中技术

    转自:http://blog.csdn.net/freshlover/article/details/11579669 Ⅰ.绝对定位居中(Absolute Centering)技术 我们经常用marg ...