使用pika连接RabbitMQ遇ACCESS_REFUSED错误求助
解决RabbitMQ远程连接被拒绝(ACCESS_REFUSED)问题
从你的RabbitMQ日志可以直接定位问题:user 'sw_test' can only connect via localhost——这个用户被标记为loopback用户,仅允许从本地主机(localhost)发起连接,所以远程请求被拒绝。
下面是两种解决方法:
方法1:命令行修改loopback用户配置
- 先查看当前的loopback用户列表:
rabbitmqctl list_loopback_users
- 根据需求修改配置:
- 仅保留
guest为loopback用户(推荐生产环境):
rabbitmqctl set_loopback_users guest- 允许所有用户远程登录(测试环境可用,生产不推荐):
rabbitmqctl set_loopback_users none - 仅保留
- 重启RabbitMQ服务生效:
# Ubuntu/Debian 系统 systemctl restart rabbitmq-server # CentOS/RHEL 系统 service rabbitmq-server restart
方法2:通过RabbitMQ管理界面修改
- 登录RabbitMQ管理后台(默认端口
15672) - 进入Admin → Users页面,找到
sw_test用户 - 点击用户右侧的「Edit」按钮
- 取消页面底部「Loopback user」的勾选
- 点击「Update user」保存,无需重启服务即可生效
验证连接
修改完成后,重新运行你的代码:
credentials = pika.PlainCredentials('sw_test','9999-****-**') connection_params = pika.ConnectionParameters(host='host-name', port=5672, virtual_host='/', credentials= credentials) connection= pika.BlockingConnection(connection_params)
即可正常建立连接。
注意:生产环境中请避免设置
loopback_users none,仅给需要远程访问的用户取消loopback限制,同时确保用户密码强度足够。
内容的提问来源于stack exchange,提问作者Salome
相关产品推荐
相关产品推荐

