mosquitto 安装mysql插件 进行权限验证

第一步:下载mosquitto源码并编译安装

https://github.com/eclipse/mosquitto 

第二步:下载mosquitto-auth-plug源码

https://github.com/jpmens/mosquitto-auth-plug

第三步:准备编译环境

yum install gcc-c++

yum install libuuid-devel

yum install mysql++-devel.x86_64 参考:https://blog.csdn.net/uniom/article/details/54134532

第四步:解压编译

unzip mosquitto的zip包

unzip mosquitto-auth-plug的zip包

进入 解压后mosquitto的文件夹执行

make mosquitto

make install

第五步:进入mosquitto-auth-plug的解压后的文件夹

复制 cp config.mk.in config.mk 

编辑config.mk:根据需要选择合适的后台。我这里只使用mysql数据库验证用户,BACKEND_MYSQL这一行是yes 注意可能BACKEND_MYSQL后面有一个问号 问号最好去掉其他的行有问号可以不用管,其余行都是no。在MOSQUITTO_SRC一行输入mosquitto的源码路径, 比如MOSQUITTO_SRC =/opt/mosquitto-1.5.5/
。在OPENSSLDIR一行输入openssl的路径,比如OPENSSLDIR = /usr/lib/openssl。

可以使用以下命令得到openssl的路径:openssl version -a

第五步:进入mosquitto-auth-plug所在目录,使用make命令生成auth-plug.so文件。

第六步:新建一个 /etc/mosquitto

第七步:把生成的auth-plug.so 复制到 /etc/mosquitto

第八步:修改配置文件

mosquitto-auth-plug的源码里已经有多种范例配置文件,可以使用这些文件。比如,我用mysql做验证,可以使用 examples目录下的mosquitto-mysql.conf。

cp examples 下的 mosquitto-mysql.conf 到/etc/mosquitto 并进行配置

根据实际情况,编辑文件里的auth_plugin,backend,数据库host,端口,数据库名,用户,密码,sql语句等。

 

我的内容如下:

autosave_interval 1800
persistence true
persistence_file mosquitto.db
persistence_location /tmp/
connection_messages true
log_timestamp true
log_dest stderr

#log_type error
#log_type warning
#log_type notice
#log_type information
#log_type all
log_type debug

listener 1883 #端口


#
#   __  __       ____   ___  _     
#  |  \/  |_   _/ ___| / _ \| |    
#  | |\/| | | | \___ \| | | | |    
#  | |  | | |_| |___) | |_| | |___ 
#  |_|  |_|\__, |____/ \__\_\_____|
#          |___/                   
#  
#                     

#auth_plugin /home/jpm/mosquitto-auth-plug/auth-plug.so
auth_plugin /etc/mosquitto/auth-plug.so#插件路径
auth_opt_backends mysql #选择mysql
#auth_opt_cdbname pwdb.cdb
auth_opt_host 10.*.*.* #我的mysql地址 
auth_opt_port 3306 #端口mysql
auth_opt_dbname mqtt #数据库名
auth_opt_user root#mysql用户名
auth_opt_pass root#mysql的密码
auth_opt_userquery SELECT pw FROM users WHERE username = '%s'
auth_opt_superquery SELECT IFNULL(COUNT(*), 0) FROM users WHERE username = '%s' AND super = 1
auth_opt_aclquery SELECT topic FROM acls WHERE username = '%s'


# Usernames with this fnmatch(3) (a.k.a glob(3))  pattern are exempt from the
# module's ACL checking
auth_opt_superusers S*
user root#这个比较重要 解决Invalid user 'mosquitto'. 这个问题

第九步:编译完mosquitto之后,进入到lib目录下,将编译之后的libmosquitto.so.1 拷贝到目录/usr/local/lib下,执行如下命令:
cp libmosquitto.so.1 /usr/local/lib

然后再执行:

执行命令:

sudo ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib/libmosquitto.so.1

ldconfig

第十步:

创建数据库 把插件源码中examples文件中的mysql.sql 文件内容复制出来到数据库中执行,可能会以一个建立索引的地方报错,直接删除后再执行就行了。

注意:需要添加客户端授权后执行 flush privileges;

第十一步:启动

mosquitto -c /etc/mosquitto/mosquitto-mysql.conf  -v

 

可能出现的错误总结:参考https://blog.csdn.net/houjixin/article/details/46711547

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值