rabbitmq用户角色(role)分为五类: 超级管理员(administrator)、监控者(monitor)、决策制定者(policymaker)、普通管理者(management)和其他。
administrator 可登录管理控制台(启用management plugin的情况下),查看所有的信息,并且可以对用户、策略(policy)进行操作;
monitoring 可登录管理控制台(启用management plugin的情况下),同时可以查看rabbitmq节点的相关信息(进程数、内存使用情况,磁盘使用情况等);
policymaker 可以登录管理控制台(启用management plugin的情况下),同时可以对策略(policy)进行操作;
management 仅可登录管理控制台(启用management plugin的情况下),无法看到节点信息,也无法对策略进行管理;
其他 无法登录管理控制台,通常就是普通的生产者和消费者。
注意,rabbitmqctl 管理 RabbitMQ 的内部用户数据库,所有其他后台需要认证的用户对于rabbitmqctl将不可见。
rabbitmqctl add_user {username} {password}
# {username} 表示用户名; {password}表示用户密码
# 该命令将创建一个 non-administrative 用户
rabbitmqctl delete_user {username}
# 表示删除一个用户,该命令将指示RabbitMQ broker去删除指定的用户
rabbitmqctl change_password {username} {newpassword}
# 表示修改指定的用户的密码
rabbitmqctl clear_password {username}
# 表示清除指定用户的密码
# 执行此操作后的用户,将不能用密码登录,但是可能通过已经配置的SASL EXTERNAL的方式登录。
rabbitmqctl authenticate_user {username} {password}
# 表示指引RabbitMQ broker认证该用户和密码
rabbitmqctl set_user_tags {username} {tag ...}
# 表示设置用户的角色,{tag}可以是零个,一个,或者是多个。并且已经存在的tag也将会被移除。
# rabbitmqctl set_user_tags tonyg administrator 该命令表示指示RabbitMQ broker确保用户tonyg为一个管理员角色。
# 上述命令在用户通过AMQP方式登录时,不会有任何影响;但是如果通过其他方式,例如管理插件方式登录时,就可以去管理用户、vhost 和权限。
rabbitmqctl list_users
# 表示列出所有用户名信息
rabbitmqctl set_permissions -p / notedeep '.*' '.*' '.*'