如何重置RabbitMQ管理用户

103
使用RabbitMQ,我们可以安装管理插件。然后使用http://localhost:55672/通过浏览器访问,使用guest:guest登录。 问题是,我无法再登录,因为我更改了密码并将角色留空。
有没有办法重置RabbitMQ管理用户?
5个回答

203

你可以使用rabbitmqctl命令访问用户管理:

add_user {username} {password}

更好的方式是编辑现有用户,或者使用以下方式为新用户设置权限:

set_permissions [-p vhostpath] {user} {conf} {write} {read}

例如,使用以下命令:(即使创建新用户,执行这三个步骤也很重要,如果您想能够登录到UI控制台并且您的程序可以正常工作而不会遇到任何权限问题)

rabbitmqctl add_user newadmin s0m3p4ssw0rd
rabbitmqctl set_user_tags newadmin administrator
rabbitmqctl set_permissions -p / newadmin ".*" ".*" ".*"

...创建一个新的管理员用户,具有默认/vhost的完全访问权限。

您可以在RabbitMQ主页上找到所有这些信息,更具体地说,在这个页面上。


8
谢谢,我尝试使用以下命令设置权限:rabbitmqctl set_user_tags khad administrator。 - Superbiji
2
@Superbiji 你应该考虑将这个评论转化为一个答案。我知道它很旧,但这是适用于我的解决方案。 - alexn
3
“set_permissions -p / newadmin "." "." ".*"” 这个命令运行得非常好!谢谢。 - ashim888
1
您应该以root身份登录或使用“sudo”。 - XIII
点击那个"...this page"链接时收到了"/man/rabbitmqctl.1.man.html" not found的错误提示。顺便说一下,今天是2023年7月27日。: ) - Scott Fraley

62

我发现最简单的方法是使用此命令为RabbitMQ中的任何用户重置密码。

rabbitmqctl change_password <USERNAME> <NEWPASSWORD>

多亏了这个答案,我才明白密码绝对不能包含“$”……显然如此。 - Scott Fraley
确实,我花了一些时间才弄明白:建议使用具有非常有限符号集的字母数字值(例如::,=)。请参阅RabbitMQ文档:https://www.rabbitmq.com/access-control.html#passwords-and-shell-escaping - undefined
1
在ChatGPT建议我删除并重新创建用户后,我找到了这个,当时我就想:“一定有更好的方法...” - undefined

26
这是专门针对存活测试的,但也适用于其他API。
rabbitmqctl add_vhost statuscheckvhost
rabbitmqctl add_user heartbeat alive
rabbitmqctl set_permissions -p statuscheckvhost heartbeat ".*" ".*" ".*"
rabbitmqctl set_user_tags heartbeat management

curl -i -u heartbeat:alive http://127.0.0.1:55672/api/aliveness-test/statuscheckvhost
HTTP/1.1 200 OK
Server: MochiWeb/1.1 WebMachine/1.9.0 (someone had painted it blue)
Date: Thu, 21 Feb 2013 22:20:10 GMT
Content-Type: application/json
Content-Length: 15
Cache-Control: no-cache
{"status":"ok"}

8
如果您在 Docker 容器中使用 RabbitMQ,可以先执行以下步骤:
docker exec -it <YOUR_CONTAINER> /bin/bash

接下来你可以这样做

rabbitmqctl change_password <USERNAME> <NEWPASSWORD>

正如@samtoddler所指出的那样


1

在阅读这篇文章后,我成功地进行了重置。非常感谢。

rabbitmqctl add_user test password rabbitmqctl set_user_tags test administrator

然后我转到浏览器控制台并使用test帐户登录。 从那里,我能够重置管理员帐户和访客帐户的密码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接