RabbitMq权限问题

单节点不存在该问题。


异常:

Exception in thread "main" java.io.IOException
at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:106)
at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:102)
at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:124)
at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:378)
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:678)
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:722)
at upsmart.zhsen.ServerProducer.main(ServerProducer.java:33)
Caused by: com.rabbitmq.client.ShutdownSignalException: connection error; protocol method: #method<connection.close>(reply-code=530, reply-text=NOT_ALLOWED - access to vhost '/' refused for user 'mq', class-id=10, method-id=40)
at com.rabbitmq.utility.ValueOrException.getValue(ValueOrException.java:67)
at com.rabbitmq.utility.BlockingValueOrException.uninterruptibleGetValue(BlockingValueOrException.java:33)
at com.rabbitmq.client.impl.AMQChannel$BlockingRpcContinuation.getReply(AMQChannel.java:361)
at com.rabbitmq.client.impl.AMQChannel.privateRpc(AMQChannel.java:226)
at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:118)
... 4 more
原因:
用户‘mq’没有权限访问‘/’


sudo rabbitmqctl list_users
列出用户权限
Listing users ...
mq [administrator]
guest [administrator]


sudo rabbitmqctl  set_permissions -p / mq '.*' '.*' '.*'
该命令使用户mq具有‘/’这个virtual host中所有资源的配置、写、读权限以便管理其中的资源
### 设置RabbitMQ用户权限及访问控制 #### 用户创建与角色分配 为了向系统中添加新用户并赋予特定的角色标签,可利用`rabbitmqctl add_user`命令来完成用户的新增工作[^4]。随后通过`set_user_tags`指令指定该用户的类别,例如管理员、监控者或是策略制定者等不同身份。 ```bash rabbitmqctl add_user username password rabbitmqctl set_user_tags username administrator ``` #### 权限设定于虚拟主机之上 针对具体Virtual Host(简称VHost),能够精确地授予某位用户关于此环境内的资源配置权、数据写入以及信息读取三项核心权利。这三类权限分别对应着正则表达式的模式匹配规则用于定义允许的操作范围: - **配置权限 (Configure)**:决定谁能更改队列和其他实体属性。 - **写权限 (Write)**:规定哪些主体有权发送消息到交换机。 - **读权限 (Read)**:限定谁可以从队列接收消息。 上述三种权限均可以通过调用`set_permissions`命令来进行设置,并且支持使用通配符`.`表示任意字符序列以实现广泛授权[^3]。 ```bash rabbitmqctl set_permissions -p vhostname username ".*" ".*" ".*" ``` 这里假设要给予名为`user_admin`的账户在整个`/vhost1`下的完全操控能力,则执行以上语句即可达成目的;其中三个参数依次代表configure, write 和 read 的权限模式字符串。 #### 查询现有用户的权限详情 一旦完成了必要的权限指派之后,还可以借助`list_user_permissions`工具查看已有的用户及其对应的许可状况,确保一切按照预期规划实施到位。 ```bash rabbitmqctl list_user_permissions username ``` #### 关键注意事项 值得注意的一点在于,每当修改了任何有关连接或通道层面的安全策略时,应当提醒应用程序重新建立网络链接,因为RabbitMQ内部会对这类验证结论做本地化存储优化处理,从而使得最新的改动不会即时反映给现存会话中的参与者们知道。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值