我正在使用身份验证插件处理mqtt broker 1.4.1,后端是mysql。
/etc/mosquitto $ sudo /usr/local/sbin/mosquitto -c mosquitto.conf
1435208131:mosquitto版本1.4.1(建立日期2015-05-07 17:19:21 + 0800)开始
1435208131:从mosquitto.conf加载配置。
1435208131:| - *** auth-plug:startup
1435208131:| - **配置顺序:mysql
1435208131:| - }}}} MYSQL
1435208131:在端口1883上打开ipv4 listen套接字。
1435208131:在端口1883上打开ipv6 listen套接字。
1435208131:警告:协议不支持的地址族
1435208142:端口1883上127.0.0.1的新连接。
1435208142:| - mosquitto_auth_unpwd_check(Leo)
1435208142:| - **检查后端mysql
您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第1行的“▒▒Leo”附近使用正确的语法
1435208142:| - getuser(Leo)AUTHENTICATED = 0 by none
1435208142:将CONNACK发送到127.0.0.1(0,4)
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/#
时,我总是低于错误:
拒绝连接:错误的用户名或密码。
此错误的任何提示?感谢,利奥
----这是Mosquitto配置文件
sudo nano /etc/mosquitto/mosquitto.conf
autosave_interval 1800
持久性真实
persistence_file m2.db
persistence_location / var / lib / mosquitto /
connection_messages true
log_timestamp true
log_dest stderr
log_type错误
log_type警告
log_type debug
log_type通知
log_type信息
log_type all
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_superquery SELECT COUNT(*)FROM users WHERE username ='%s'AND super = 1
auth_opt_aclquery SELECT主题FROM acls WHERE(username ='%s')AND(rw> =%d)
1883号港口
protocol mqtt
这里是mysql中的用户和表:
mysql> select * from users;
+ ---- + ---------- + ------------------------------ ---------------------- + ------- +
| id |用户名| pw |超级|
+ ---- + ---------- + ------------------------------ ---------------------- + ------- +
| 1 |狮子座| PBKDF2 $ sha256 $ 901 $ ... $ ... | 0 |
+ ---- + ---------- + ------------------------------ ---------------------- + ------- +
mysql> select * from acls;
+ ---- + ---------- + ---------------- + ---- +
| id |用户名|主题| rw |
+ ---- + ---------- + ---------------- + ---- +
| 1 |狮子座|狮子座/#| 2 |
+ ---- + ---------- + ---------------- + ---- +
答案 0 :(得分:0)
检查%s周围的单引号。其中一些是“花哨的”,如'%s',其中一些是普通的(应该是),如'%s'。 stackoverflow编辑器中的差异非常明显。将它们全部用简单的单引号'
。