我正在开发带有身份验证插件的mqtt broker 1.4.1,后端是mysql。
/etc/mosquitto $ sudo /usr/local/sbin/mosquitto -c mosquitto.conf
1435208131:mosquito 1.4.1版本(构建日期2015-05-07 17:19:21+0800)启动
1435208131:从mosquitto.conf 加载的配置
1435208131:|--***身份验证插件:启动
1435208131:|--**配置顺序:mysql
1435208131:|-}}}}MYSQL-
1435208131:正在打开端口1883上的ipv4侦听套接字。
1435208131:正在打开端口1883上的ipv6侦听套接字。
1435208131:警告:协议不支持地址系列
1435208142:端口1883上127.0.0.1的新连接。
1435208142:|--mosquitto_auth_unpwd_check(Leo)
1435208142:|--**检查后端mysql
您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解在附近使用的正确语法▒▒Leo在 1号线
1435208142:|--getuser(Leo)AUTHENTICATE=0 by none
1435208142:向127.0.0.1(0,4)发送CONNACK
1435208142:客户端上的套接字错误,正在断开连接。
在mysql中,我使用INSERT INTO users (username, pw) VALUES ('Leo', 'PBKDF2$sha256$901$...$...');
和INSERT INTO acls (username, topic, rw) VALUES ('Leo', 'Leo/#', 2);
创建测试用户及其主题控件的命令。
当我运行sudo mosquitto_sub -h localhost -p 1883 -u Leo -P Leo -t Leo/#
时,我总是得到以下错误:
连接被拒绝:用户名或密码不正确。
有这个错误的迹象吗?谢谢,利奥
----这是Mosquito配置文件
sudo nano /etc/mosquitto/mosquitto.conf
autosave_interval 1800
持久性真实
persistence_file m2.db
persistence_location/var/lib/mosquitto/
connection_messages true
log_timestamp真实
log_dest stderr
log_type错误
log_type警告
log_type调试
log_type通知
log_type信息
log_type所有
auth_plugin/etc/mosquitto/auth-plug.so
auth_opt_backends mysql
auth_opt_host localhost
auth_opt_port 3306
auth_opt_dbname sql_iocaremqtt
auth_opt_user pi
auth_opt_pass rpi
auth_opt_userquery SELECT pw FROM users WHERE username='%s'
auth_opt_supquery从用户名="%s"且super=1 的用户中选择计数(*)
auth_opt_aclquery从acls WHERE(用户名="%s")AND(rw>=%d)选择主题
端口1883
协议mqtt
这是mysql:中的用户和表
mysql> select * from users;
+----+----------+----------------------------------------------------+-------+
|id|用户名|pw|super|
+----+----------+----------------------------------------------------+-------+
|1|Leo|PBKDF2$sha256$901$…$…|0|
+----+----------+----------------------------------------------------+-------+
mysql> select * from acls;
+----+----------+----------------+----+
|id |用户名|主题| rw |
+----+----------+----------------+----+
|1|Leo|Leo/#|2|
+----+----------+----------------+----+
检查%s周围的单引号。其中一些是"花哨的",比如"%s",而另一些则是普通的(应该是这样),就像"%s"。这种差异在stackoverflow编辑器中非常明显。让它们都是简单的单引号'
。