MQTT连接故障排查:Connection refused及权限不足问题的解决过程

作者:袖梨 2026-05-30

当MQTT客户端出现"无法连接至服务器"错误时,往往与网络配置或服务端设置相关。本文将详细分析错误原因并提供解决方案。

错误日志

org.eclipse.paho.client.mqttv3.MqttException: 无法连接至服务器

    at org.eclipse.paho.client.mqttv3.internal.TCPNetworkModule.start(TCPNetworkModule.java:80) ~[org.eclipse.paho.client.mqttv3-1.2.5.jar:na]

    at org.eclipse.paho.client.mqttv3.internal.ClientComms$ConnectBG.run(ClientComms.java:724) ~[org.eclipse.paho.client.mqttv3-1.2.5.jar:na]

    at java.lang.Thread.run(Thread.java:750) ~[na:1.8.0_333]

Caused by: java.net.ConnectException: Connection refused: connect

    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) ~[na:1.8.0_333]

    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:81) ~[na:1.8.0_333]

    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:476) ~[na:1.8.0_333]

    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:218) ~[na:1.8.0_333]

    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:200) ~[na:1.8.0_333]

    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:162) ~[na:1.8.0_333]

    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:394) ~[na:1.8.0_333]

    at java.net.Socket.connect(Socket.java:606) ~[na:1.8.0_333]

    at org.eclipse.paho.client.mqttv3.internal.TCPNetworkModule.start(TCPNetworkModule.java:74) ~[org.eclipse.paho.client.mqttv3-1.2.5.jar:na]

    ... 2 common frames omitted

排查思路

  1. 使用ping命令测试能否连通服务端
  2. 检查服务端防火墙是否开放了连接端口
  3. 确认客户端使用的IP地址和端口号是否正确
  4. 查看MQTT服务端配置文件是否允许远程连接

本文遇到的错误是由于MQTT配置未开放远程连接所致,以下是具体的解决方法:

  1. 修改mosquitto.conf配置文件

若找不到该文件,可尝试查找mosquitto.conf.example文件,复制后重命名。若无则需新建文件并手动添加配置。

连接MQTT时报错Connectionrefused:connect及无权连接的解决过程

  1. 修改配置文件中的关键位置

连接MQTT时报错Connectionrefused:connect及无权连接的解决过程

需要设置允许所有IP地址连接

连接MQTT时报错Connectionrefused:connect及无权连接的解决过程

  1. 设置匿名连接权限

本地开发环境可设为true,生产环境建议设为false

配置allow_anonymous为false后,连接时需提供账户密码

若未正确配置该参数,可能会出现以下错误:

org.eclipse.paho.client.mqttv3.MqttSecurityException: 无权连接

    at org.eclipse.paho.client.mqttv3.internal.ExceptionHelper.createMqttException(ExceptionHelper.java:28) ~[org.eclipse.paho.client.mqttv3-1.2.5.jar:na]

    at org.eclipse.paho.client.mqttv3.internal.ClientState.notifyReceivedAck(ClientState.java:1053) ~[org.eclipse.paho.client.mqttv3-1.2.5.jar:na]

    at org.eclipse.paho.client.mqttv3.internal.CommsReceiver.run(CommsReceiver.java:151) ~[org.eclipse.paho.client.mqttv3-1.2.5.jar:na]

    at java.lang.Thread.run(Thread.java:750) ~[na:1.8.0_333]

总结

通过检查网络连接、修改配置文件等步骤,可以有效解决MQTT连接拒绝问题。合理的安全设置对系统稳定性至关重要。

  1. 解决spring-integration-mqtt频繁报Lost connection错误问题
  2. mqtt.js 无法连接/错误提示 WebSocket connection to 'ws://xxxxx' failed:的解决方法

相关文章

精彩推荐