# 用户管理:user

在 RabbitMQ 中,用户 是访问控制(Access Control)的基本单元,且用户可以跨越多个 vhost 授权。使用标准的用户名和密码来认证用户。

# 创建用户:add_user

rabbitmqctl add_user {username} {password}
1

实践练习

[root@study ~]# rabbitmqctl add_user test1 123456
Creating user "test1"
1
2

# 修改密码:change_password

rabbitmqctl change_password {username} {newpassword}
1

实践练习

[root@study ~]# rabbitmqctl change_password test1 1234567
Changing password for user "test1"
1
2

# 清除密码:clear_password

清除密码后,该用户就不能使用密码登录了

rabbitmqctl change_password {username} 
1

# 验证用户密码:authenticate_user

可以验证用户密码是否匹配

rabbitmqctl authenticate_user {username} {newpassword}
1

实践练习

# 验证失败
[root@study ~]# rabbitmqctl authenticate_user test1 123456
Authenticating user "test1"
Error: failed to authenticate user "test1"

# 验证成
[root@study ~]# rabbitmqctl authenticate_user test1 1234567
Authenticating user "test1"
Success
1
2
3
4
5
6
7
8
9

# 用户列表:list_users

rabbitmqctl list_users
1

实践练习

[root@study ~]# rabbitmqctl list_users
Listing users
test1   []
admin   [administrator]
guest   [administrator]
# 可以看到有 3 个用户
1
2
3
4
5
6

方括号中的是角色类型,有 5 种:

  • none:无任何角色。新创建的为这种;怎么显示的是没有?

  • management:可以访问 web 管理页面(下一节讲解)

  • policymaker:

    包含 management 的所有权限,并且可以管理 策略(Policy)参数(Parameter)(下一章讲解)

  • monitoring:

    包含 management 的所有权限,并且可以看到所有连接、信道及节点相关的信息

  • administrator:

    最高权限,包含 monitoring 的所有权限,并且可以管理用户、虚拟主机、权限、策略、参数等。

# 设置角色 set_user_tags

可以给用户设置角色,设置角色之后,现有的角色会被删除。也就是以这次设置的角色为准

rabbitmqctl set_user_tags {username} {tag ...}

tag :表示要设置的角色,可以多个,空格隔开
1
2
3

实践练习

[root@study ~]# rabbitmqctl set_user_tags test1 management policymaker
Setting tags for user "test1" to [management,policymaker]

# 查看用户,就看到了刚刚设置的角色
[root@study ~]# rabbitmqctl list_users
Listing users
test1   [management, policymaker]
admin   [administrator]
guest   [administrator]

# 不带 tag 就是清空角色
[root@study ~]# rabbitmqctl set_user_tags test1
Setting tags for user "test1" to []

1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 删除用户:delete_user

rabbitmqctl delete_user {username}
1

实践练习

[root@study ~]# rabbitmqctl delete_user test1
Deleting user "test1"
1
2