如何列出RabbitMQ中所有用户的权限配置?
RabbitMQ一次性查询所有用户权限解决方案
原生rabbitmqctl没有提供直接查询所有用户权限的单独命令,你可以通过组合用户列表查询+循环实现,操作非常便捷:
Linux/macOS 环境快速实现
直接执行以下一行命令即可输出所有用户的权限,自带分隔符方便查看:
rabbitmqctl list_users --no-table-headers | awk '{print $1}' | xargs -I {} sh -c 'echo "用户 {} 权限:"; rabbitmqctl list_user_permissions {} --no-table-headers; echo "----------------------------------"'
命令逻辑说明:
- 先通过
rabbitmqctl list_users --no-table-headers获取全部用户列表,去掉冗余表头输出 - 用awk提取第一列的纯用户名,过滤掉第二列的用户标签信息
- 用xargs遍历每个用户名,逐个调用权限查询命令,同时输出分隔标识区分不同用户的结果
如果只需要纯数据输出不需要额外说明,可使用简化版命令:
rabbitmqctl list_users --no-table-headers | awk '{print $1}' | xargs -I {} rabbitmqctl list_user_permissions {}
Windows PowerShell 环境实现
Windows系统下可使用以下PowerShell命令实现同样效果:
(rabbitmqctl list_users --no-table-headers) -split "`n" | ForEach-Object { $user = $_.Split()[0]; Write-Host "用户 $user 权限:"; rabbitmqctl list_user_permissions $user --no-table-headers; Write-Host "----------------------------------" }
高版本RabbitMQ结构化输出(3.9+版本适用)
如果你的RabbitMQ版本≥3.9,可以添加--format json参数输出JSON格式的结构化结果,更适合后续程序处理:
rabbitmqctl list_users --no-table-headers --format json | jq -r '.[].user' | xargs -I {} sh -c 'echo "{}: $(rabbitmqctl list_user_permissions {} --format json)"'
注意事项
- 所有命令都需要操作账号具备RabbitMQ管理员权限,普通账号执行会报错
- 如果你使用Docker部署的RabbitMQ,需要在所有
rabbitmqctl命令前添加docker exec <你的RabbitMQ容器名称>前缀,例如docker exec my-rabbitmq rabbitmqctl list_users
内容的提问来源于stack exchange,提问作者MoRe
相关产品推荐
相关产品推荐

