mqtt broker 1.4.1 with auth plugin,backend mysql,sub / pub,用户名错误或pwd

时间:2015-06-25 06:00:34

标签: mysql authentication plugins mqtt mosquitto

我正在使用身份验证插件处理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 |

     

+ ---- + ---------- + ---------------- + ---- +

1 个答案:

答案 0 :(得分:0)

检查%s周围的单引号。其中一些是“花哨的”,如'%s',其中一些是普通的(应该是),如'%s'。 stackoverflow编辑器中的差异非常明显。将它们全部用简单的单引号'