fly-iot飞凡物联专栏:
https://blog.csdn.net/freewebsys/category_12219758.html
https://www.bilibili.com/video/BV1JG411B7ty/
【fly-iot】(5):开源IOT物联网项目,成接入Emqx的MQTT服务,并且配置MySQL数据库鉴权,还是非常方便的,可以使用websocker连接测试
已连接,表示数据库密码都配置正确。
最重要的是这个鉴权的查询SQL:对于MySQL的查询如下:
SELECT token as password_hash FROM devices where
`deviceUsername` = ${username} AND blocked = 0 LIMIT 1
然后就可以在工具中进行测试了:
可以连接成功。然后测试订阅和消息发送了。
整个的docker-compose代码:
https://gitee.com/fly-iot/docker-compose
...
################## emqx latest 版本 ##################
emqx:
image: emqx/emqx:latest
container_name: emqx
environment:
- "EMQX_NODE_NAME=emqx@node.emqx.io"
- "EMQX_CLUSTER__DISCOVERY_STRATEGY=static"
- "EMQX_CLUSTER__STATIC__SEEDS=[emqx@node.emqx.io]"
healthcheck:
test: ["CMD", "/opt/emqx/bin/emqx ctl", "status"]
interval: 5s
timeout: 25s
retries: 5
ports:
- 1883:1883
- 8083:8083
- 8084:8084
- 8883:8883
- 18083:18083
volumes:
- ./emqx/cluster.hocon:/opt/emqx/data/configs/cluster.hocon
depends_on:
- mysql-iot
可以使用配置的方式进行,这样就不用登陆到界面中进行配置。
后续可以把管理后台关闭。直接使用配置文件更加安全。
cluster.hocon 的配置文件
authentication = [
{
backend = mysql
database = fly_iot
enable = true
mechanism = password_based
password = mysqliot
password_hash_algorithm {name = plain, salt_position = disable}
pool_size = 8
query = "SELECT token as password_hash FROM devices where \n `deviceUsername` = ${username} AND blocked = 0 LIMIT 1"
query_timeout = 5s
server = "mysql-iot:3306"
ssl {
ciphers = []
depth = 10
enable = false
hibernate_after = 5s
log_level = notice
reuse_sessions = true
secure_renegotiate = true
verify = verify_peer
versions = [tlsv1.3, tlsv1.2]
}
username = root
}
]
有配置文件就可以了。
使用 emqx 做 mqtt 服务还是非常的方便的。
鉴权是直接查询数据库。所以后台系统是 python 还是 golang 问题不大。
压力都在 emqx 的服务器和 mysql 的数据库上。