RabbitMQ 教程

用户管理

在 RabbitMQ 中,用户是访问控制(Access Control)的基本单元,且单个用户可以跨越多个 vhost 进行授权。如果用户拥有多个 vhost,可以对每个 vhost 授予不同级别的访问权限,并使用标准的用户名和密码来认证用户。

创建用户

RabbitMQ 中,使用 rabbitmqctl add_user 命令创建用户,命令格式如下:

rabbitmqctl add_user username password

其中:

  • username:表示要创建的用户名称

  • password:表示要创建用户的登录密码

示例:创建名为 demo,密码为 abc124 的用户

# 创建用户
D:\server\rabbitmq_server-3.9.11\sbin> rabbitmqctl.bat add_user demo abc123
Adding user "demo" ...
Done. Don't forget to grant the user permissions to some virtual hosts! See 'rabbitmqctl help set_permissions' to learn more.

# 给用户授权
D:\server\rabbitmq_server-3.9.11\sbin> rabbitmqctl.bat set_permissions -p vhost1 demo ".*" ".*" ".*"
Setting permissions for user "demo" in vhost "vhost1" ...

# 查看用户的权限
D:\server\rabbitmq_server-3.9.11\sbin> rabbitmqctl.bat list_user_permissions demo
Listing permissions for user "demo" ...
vhost   configure       write   read
vhost1  .*      .*      .*

删除用户

在 RabbitMQ 中,可以通过 rabbitmqctl delete_user 命令删除存在的用户。命令格式:

rabbitmqctl delete_user username

其中,username 表示要删除的用户名称。

示例:删除 demo 用户

D:\server\rabbitmq_server-3.9.11\sbin> rabbitmqctl.bat delete_user demo
Deleting user "demo" ...

修改密码

在 RabbitMQ 中,可以通过 rabbitmqctl change_password 命令来更改指定用户的密码。命令格式:

rabbitmqctl change_password username newpassword

其中,username 表示要变更密码的用户名称,newpassword 表示要变更的新的密码。

示例:将 demo 用户的密码变更为 123456

D:\server\rabbitmq_server-3.9.11\sbin> rabbitmqctl change_password demo 123456
Changing password for user "demo" ...

清理密码

在 RabbitMQ 中,可以通过 rabbitmqctl clear_password 清除指定用户的密码,这样用户就不能使用密码进行登录了。命令格式:

rabbitmqctl clear_password username

其中 username 表示要清除密码的用户名。

示例:清除 demo 用户的密码

D:\server\rabbitmq_server-3.9.11\sbin> rabbitmqctl.bat clear_password demo
Clearing password for user "demo" ...

验证用户

在 RabbitMQ 中,可以通过 rabbitmqctl authenticate_user 命令验证用户名和密码是否有效。命令格式:

rabbitmqctl authenticate_user userηame password

其中 username 表示需要被验证的用户名称,password 表示用户密码。

示例:验证用户 demo 的密码是否为 123456

D:\server\rabbitmq_server-3.9.11\sbin> rabbitmqctl.bat authenticate_user demo 123456
Authenticating user "demo" ...
Success

D:\server\rabbitmq_server-3.9.11\sbin> rabbitmqctl.bat authenticate_user demo 123450
Authenticating user "demo" ...
Error:
Error: failed to authenticate user "demo"
user 'demo' - invalid credentials

列出用户

在 RabbitMQ 中,可以通过 rabbitmqctl list_users 命令列出当前的所有用户。每个结果行都包含用户名称,其后紧跟用户的角色(tags)。示例:

D:\server\rabbitmq_server-3.9.11\sbin> rabbitmqctl.bat list_users
Listing users ...
user    tags
admin   [administrator]
demo    []
guest   [administrator]
hxstrive        [administrator]

用户的角色分为五种类型:

  • none:无任何角色。新创建的用户的角色默认为 none

  • management:可以访问 We 管理页面

  • policymaker:包含 management 的所有权限,并且可以管理策略(Policy)和参数(Parameter)

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

  • administrator:代表了最高的权限,类似 Linux 的 root 用户。包含 monitoring 的所有权限,并且可以管理用户、虚拟机、权限、策略、参数等

用户角色

在 RabbitMQ 中,可以通过 rabbitmqctl set_user_tags username 命令为用户设置角色。命令格式:

rabbitmqctl set user tags username tag...

其中 username 参数表示需要设置角色的用户名称,tag 参数用于设置0个、1个或者多个的角色,设置之后任何之前现有的身份都会被删除。示例如下:

(1)为 demo 用户设置 monitoring 角色

D:\server\rabbitmq_server-3.9.11\sbin> rabbitmqctl.bat set_user_tags demo monitoring
Setting tags for user "demo" to [monitoring] ...
D:\server\rabbitmq_server-3.9.11\sbin> rabbitmqctl.bat list_users -q
user    tags
admin   [administrator]
demo    [monitoring]
guest   [administrator]
hxstrive        [administrator]

(2)使用 -q 参数静默的为 demo 用户添加 policymaker 角色

D:\server\rabbitmq_server-3.9.11\sbin> rabbitmqctl.bat set_user_tags demo policymaker -q
D:\server\rabbitmq_server-3.9.11\sbin> rabbitmqctl.bat list_users -q
user    tags
admin   [administrator]
demo    [policymaker]
guest   [administrator]
hxstrive        [administrator]

(3)清除 demo 用户上面的所有角色

D:\server\rabbitmq_server-3.9.11\sbin> rabbitmqctl.bat set_user_tags demo
Setting tags for user "demo" to [] ...
D:\server\rabbitmq_server-3.9.11\sbin> rabbitmqctl.bat list_users -q
user    tags
admin   [administrator]
demo    []
guest   [administrator]
hxstrive        [administrator]

(4)为 demo 用户设置多个角色,分别为 policymaker,monitoring

D:\server\rabbitmq_server-3.9.11\sbin> rabbitmqctl.bat set_user_tags demo policymaker,monitoring
Setting tags for user "demo" to [policymaker,monitoring] ...
D:\server\rabbitmq_server-3.9.11\sbin> rabbitmqctl.bat list_users -q
user    tags
admin   [administrator]
demo    [policymaker,monitoring]
guest   [administrator]
hxstrive        [administrator]
说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号