windows系统安装mqtt
前言
最近在关注物联网相关的信息,了解到MQTT协议。记录一下windows安装MQTT。
在 Windows 10 系统下安装 MQTT,一般需要先安装 MQTT 代理服务器(以 Mosquitto 为例),再安装 MQTT 客户端工具。以下是具体的安装步骤:
安装 Mosquitto MQTT 代理服务器
-
下载Mosquitto
- 访问 Mosquitto 的官方下载页面:Download | Eclipse Mosquitto
- 选择适用于 Windows 的安装包(.exe 文件),建议下载最新的稳定版本。
-
运行安装程序
- 双击下载的安装包,按照向导提示进行安装。
- 安装过程中,可勾选 "Add mosquitto to PATH" 选项,将 Mosquitto 添加到系统环境变量中。(最新版本应该是没有这个选项,直接下一步安装即可自动添加系统path)。
-
配置 Mosquitto
- 打开安装目录(默认路径:
C:\Program Files\mosquitto)。记住这个路径后面有用。 - 编辑
mosquitto.conf文件,添加或修改以下配置:
- 打开安装目录(默认路径:
listener 1883 # MQTT默认端口
allow_anonymous true # 允许匿名访问,测试环境可用
启动 Mosquitto 服务
以管理员身份打开命令提示符。
执行以下命令启动 Mosquitto 服务
net start mosquitto
或者:
sc start mosquitto
停止Mosquitto 服务:
net stop mosquitto #关闭mosquitto服务
设置 Mosquitto 服务为自动启动
sc config mosquitto start= auto
其他设置:
start=enable 手动启动
start=disable 禁用服务
验证 Mosquitto 是否运行
sc query mosquitto
-
SERVICE_NAME: mosquitto的信息,说明服务已存在,检查STATE是否为RUNNING。
- 如果返回
[SC] EnumQueryServicesStatus:OpenService FAILED 1060,说明服务未注册,需要手动注册。
手动注册 Mosquitto 为 Windows 服务(如果未自动注册)
mosquitto.exe -v -c "C:\Program Files\mosquitto\mosquitto.conf" --install
-v:显示详细日志(可选)。-c:指定 Mosquitto 配置文件路径(默认可能是C:\Program Files\mosquitto\mosquitto.conf)。--install:将 Mosquitto 注册为 Windows 服务。
注意:确保
mosquitto.exe在PATH环境变量中,或者使用完整路径(如"C:\Program Files\mosquitto\mosquitto.exe")。
注意:正常安装的话,服务都是已经注册的,只需要启动mosquitto服务即可。
如何卸载 Mosquitto 服务?
mosquitto.exe --remove
或
sc delete mosquitto
Mosquitto 设置账号密码
Mosquitto 设置密码不是在配置文件中设置,而是使用自带了一个工具 mosquitto_passwd,用于管理用户认证文件(默认是 password_file)创建一个单独的txt文件存储用户名和密码
命令:
mosquitto_passwd -c "C:\Program Files\mosquitto\passwords.txt" admin
1.此命令是在mosquitto根目录中运行,若是任意目录的话需指定完整的mosquitto_passwd路径,如:
"C:\Program Files\mosquitto\mosquitto_passwd.exe" -c "C:\Program Files\mosquitto\mosquitto_passwd.exe" -c "C:\mosquitto\passwd" username username
2.-c 代表创建新文件,若是文件重名将覆盖。第二次使用此命令要去到-c.
3."C:\Program Files\mosquitto\passwords.txt"是密码文件的存放路径(可自定义)。
4.username 是你要创建的用户名(如 admin、mqttuser 等)。
回车,就让你输入两次username的密码。
添加更多用户(可选):此方法不需要输入两次密码确认
# 使用 -b 参数直接添加用户名和密码(无需交互)
mosquitto_passwd -b C:\Program Files\mosquitto\passwords.txt user1 your_password_here
如何让账号密码生效?
打开配置文件:
编辑 C:\Program Files\mosquitto\mosquitto.conf,添加或修改以下内容:
# 禁用匿名访问
allow_anonymous false
# 指定密码文件路径
password_file C:\Program Files\mosquitto\passwords.txt
# 可选:启用基于用户和主题的访问控制(ACL)
acl_file C:\Program Files\mosquitto\aclfile.txt
配置访问控制列表(ACL)(可选):
若启用了 acl_file,需创建 aclfile.txt 并定义权限:
# 允许用户 admin 读写所有主题
user admin
topic readwrite #
# 允许用户 user1 只读某些主题
user user1
topic read sensors/#
topic write commands/#
重启 Mosquitto 服务
net stop mosquitto
net start mosquitto
常见问题:
问题:
问题设置完密码路径之后,启动时显示启动成功,但是sc query mosquitto查看状态时显示STOPPED。
原因:
Mosquitto 服务运行时使用的账户有权限不足
解决办法:
-
打开“服务”管理器:
- 按下
Win + R,输入services.msc,回车。
- 按下
-
找到
MosquittoBroker服务,右键选择“属性”。(若是没有找到,尝试重启电脑试试) -
切换到“登录”选项卡:
- 默认情况下,服务可能以
LocalSystem账户运行。 - 你可以选择“此账户”,然后输入一个有足够权限的 Windows 用户账户(如你的管理员账户)和密码。
- 默认情况下,服务可能以
-
点击“确定”保存设置,并尝试重新启动服务:
MQTT客户端
方法一:使用 MQTT.fx(图形化客户端)
-
下载 MQTT.fx
- 访问 MQTT.fx 官方网站:Softblade GmbH - Home of MQTT.fx®
- 下载适用于 Windows 的安装包并安装。
-
配置 MQTT.fx
- 打开 MQTT.fx,点击 "New Connection" 创建新连接。
- 配置连接参数:
- Broker Address:
localhost(本地 Mosquitto 服务器) - Broker Port:
1883 - Client ID: 自定义(如
mqttfx_client)
- Broker Address:
- 点击 "Connect" 连接到 MQTT 代理服务器。
方法二:使用命令行客户端(可选)
-
安装 Eclipse Paho MQTT 客户端
- 通过 pip 安装 Python MQTT 客户端:
powershell
pip install paho-mqtt
- 通过 pip 安装 Python MQTT 客户端:
-
测试 MQTT 连接
- 发布消息:
powershell
python -c "import paho.mqtt.client as mqtt; client = mqtt.Client(); client.connect('localhost', 1883); client.publish('test/topic', 'Hello, MQTT!')" - 订阅消息:
powershell
python -c "import paho.mqtt.client as mqtt; def on_message(client, userdata, msg): print(msg.topic+' '+str(msg.payload)); client = mqtt.Client(); client.on_message = on_message; client.connect('localhost', 1883); client.subscribe('test/topic'); client.loop_forever()"
- 发布消息:
验证安装
-
检查 Mosquitto 服务状态
- 在命令提示符中执行:
powershell
net status mosquitto - 若显示 "已启动",则服务正常运行。
- 在命令提示符中执行:
-
测试 MQTT 通信
- 使用 MQTT.fx 或命令行客户端发布 / 订阅消息,确认能正常通信。
通过以上步骤,你可以在 Windows 10 上成功安装 MQTT 代理服务器和客户端工具,开始进行 MQTT 通信开发或测试。
=========下面是创建的.bat文件,放入Mosquitto根目录,右键管理员身份运行即可=======
1. 启动 Mosquitto 服务(StartMosquitto.bat)
@echo off
:: 检查是否以管理员身份运行
fltmc >nul 2>&1 || (echo 请以管理员身份运行此脚本! && pause && exit /b 1)
:: 切换到Mosquitto安装目录
cd /d "C:\Program Files\mosquitto" || (echo 目录不存在! && pause && exit /b 1)
:: 启动服务
echo 正在启动Mosquitto服务...
net start mosquitto
:: 提示结果
if %errorlevel% equ 0 (
echo Mosquitto服务启动成功!
) else (
echo Mosquitto服务启动失败,请检查服务是否存在。
)
pause
2. 关闭 Mosquitto 服务(StopMosquitto.bat)
@echo off
:: 检查是否以管理员身份运行
fltmc >nul 2>&1 || (echo 请以管理员身份运行此脚本! && pause && exit /b 1)
:: 切换到Mosquitto安装目录
cd /d "C:\Program Files\mosquitto" || (echo 目录不存在! && pause && exit /b 1)
:: 停止服务
echo 正在停止Mosquitto服务...
net stop mosquitto
:: 提示结果
if %errorlevel% equ 0 (
echo Mosquitto服务停止成功!
) else (
echo Mosquitto服务停止失败,请检查服务是否正在运行。
)
pause
3. 设置 Mosquitto 开机自启(SetAutoStartMosquitto.bat)
@echo off
:: 检查是否以管理员身份运行
fltmc >nul 2>&1 || (echo 请以管理员身份运行此脚本! && pause && exit /b 1)
:: 切换到Mosquitto安装目录
cd /d "C:\Program Files\mosquitto" || (echo 目录不存在! && pause && exit /b 1)
:: 设置服务开机自启
echo 正在设置Mosquitto服务开机自启...
sc config mosquitto start= auto
:: 提示结果
if %errorlevel% equ 0 (
echo Mosquitto服务已设置为开机自启!
) else (
echo 设置失败,请检查服务名称是否正确。
)
pause
4. 查询 Mosquitto 运行状态(CheckMosquittoStatus.bat)
@echo off
:: 检查是否以管理员身份运行
fltmc >nul 2>&1 || (echo 请以管理员身份运行此脚本! && pause && exit /b 1)
:: 切换到Mosquitto安装目录
cd /d "C:\Program Files\mosquitto" || (echo 目录不存在! && pause && exit /b 1)
:: 查询服务状态
echo 正在查询Mosquitto服务状态...
sc query mosquitto
:: 简化状态提示(可选)
if %errorlevel% equ 0 (
echo 服务状态查询成功!
) else (
echo 服务未安装或无法查询。
)
pause
使用说明
- 将上述代码分别保存为 4 个
.bat文件(如StartMosquitto.bat、StopMosquitto.bat等)。 - 必须右键文件选择 “以管理员身份运行”(否则会因权限不足执行失败)。
- 执行后会显示操作结果,按任意键关闭窗口。
如果运行时提示 “目录不存在”,请检查C:\Program Files\mosquitto是否为你的 Mosquitto 实际安装路径,若不同需修改cd /d后的路径。
更多推荐
所有评论(0)