为什么我在启动RabbitMQ时得到“no access to this vhost”?

Shai Ben-Zvi
2023-01-22还剩11分08秒

主题

为什么我在启动RabbitMQ时看到“no access to this vhost”错误?

描述

RabbitMQ是Xray使用的微服务之一。
它在队列中保存和管理Xray的所有消息,包括事件、索引、持久和分析消息。

RabbitMQ的队列、用户权限、策略和连接都是由一组逻辑实体来管理的。虚拟主机”。
当服务器运行其第一次启动时,它验证数据库是否未初始化或已被删除。一个新的数据库将从以下资源开始:2022世界杯阿根廷预选赛赛程

  • 一个虚拟主机命名为/(斜杠)

  • 默认用户对/虚拟主机具有完全访问权限:
    用户名:客人
    密码:客人

更多的信息可以在这里找到外部文档RabbitMQ页面。
如果启动失败,则在x射线服务器日志中显示如下错误:

[2019/07/18 12:54:07 EDT] [Error] (www.si-fil.com/xray/internal/xqueue/connector.connectToRabbitMQ:183)连接兔子消息队列检查mq设置错误。错误:Exception(403)原因:" no access to this vhost "

在RabbitMQ日志中,我们将观察到以下内容:

<0.830.0> (127.0.0.1:54910 -> 127.0.0.1:5672, vhost: 'none', user: 'guest', state: open),通道0:
{handshake_error, opening, {amqp_error, internal_error, "用户'guest'无法访问vhost '/': vhost '/' down", 'connection.open'}}

原因:

RabbitMQ上的错误" no access to The vhost ",可能发生在运行RabbitMQ的用户没有为所使用的vhost配置任何权限的情况下(默认为" / "),或者RabbitMQ没有正确关闭的情况下(例如,我们耗尽了磁盘空间的情况下)。

可以通过执行以下命令来测试:

$ curl -user guest:guest http://rabbitmq:15672/api/vhosts

决议

在执行以下步骤之前,我们建议联系JFrog Support,因为以下步骤可能会通过从管理数据库中删除所有数据(例如已配置的用户和vhosts以及所有持久消息)将RabbitMQ节点返回到初始状态。

$ rabbitmqctl stop_app

$ rabbitmqctl reset

$ rabbitmqctl status

$ service rabbitmq-server stop

$ service rabbitmq-server start

$ rabbitmq-plugins启用rabbitmq_management

$ service rabbitmq-server restart

$ curl -user guest:guest http://rabbitmq:15672/api/vhosts