前言

        最近在关注物联网相关的信息,了解到MQTT协议。记录一下windows安装MQTT。

        在 Windows 10 系统下安装 MQTT,一般需要先安装 MQTT 代理服务器(以 Mosquitto 为例),再安装 MQTT 客户端工具。以下是具体的安装步骤:

安装 Mosquitto MQTT 代理服务器

  1. 下载Mosquitto

    • 访问 Mosquitto 的官方下载页面:Download | Eclipse Mosquitto
    • 选择适用于 Windows 的安装包(.exe 文件),建议下载最新的稳定版本。
  2. 运行安装程序

    • 双击下载的安装包,按照向导提示进行安装。
    • 安装过程中,可勾选 "Add mosquitto to PATH" 选项,将 Mosquitto 添加到系统环境变量中。(最新版本应该是没有这个选项,直接下一步安装即可自动添加系统path)。
  3. 配置 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 是你要创建的用户名(如 adminmqttuser 等)。

回车,就让你输入两次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 服务运行时使用的账户有权限不足

解决办法:

  1. 打开“服务”管理器:

    • 按下 Win + R,输入 services.msc,回车。
  2. 找到 Mosquitto Broker服务,右键选择“属性”。(若是没有找到,尝试重启电脑试试

  3. 切换到“登录”选项卡:

    • 默认情况下,服务可能以 LocalSystem 账户运行。
    • 你可以选择“此账户”,然后输入一个有足够权限的 Windows 用户账户(如你的管理员账户)和密码。
  4. 点击“确定”保存设置,并尝试重新启动服务:

MQTT客户端

方法一:使用 MQTT.fx(图形化客户端)
  1. 下载 MQTT.fx

  2. 配置 MQTT.fx

    • 打开 MQTT.fx,点击 "New Connection" 创建新连接。
    • 配置连接参数:
      • Broker Addresslocalhost(本地 Mosquitto 服务器)
      • Broker Port1883
      • Client ID: 自定义(如mqttfx_client
    • 点击 "Connect" 连接到 MQTT 代理服务器。
方法二:使用命令行客户端(可选)
  1. 安装 Eclipse Paho MQTT 客户端

    • 通过 pip 安装 Python MQTT 客户端:

      powershell

      pip install paho-mqtt
      
  2. 测试 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()"
      

验证安装

  1. 检查 Mosquitto 服务状态

    • 在命令提示符中执行:

      powershell

      net status mosquitto
      
    • 若显示 "已启动",则服务正常运行。
  2. 测试 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

使用说明

  1. 将上述代码分别保存为 4 个.bat文件(如StartMosquitto.batStopMosquitto.bat等)。
  2. 必须右键文件选择 “以管理员身份运行”(否则会因权限不足执行失败)。
  3. 执行后会显示操作结果,按任意键关闭窗口。

如果运行时提示 “目录不存在”,请检查C:\Program Files\mosquitto是否为你的 Mosquitto 实际安装路径,若不同需修改cd /d后的路径。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐