像mysql有数据库的概念而且能够指定用户对库和表等操做的权限。那RabbitMQ呢?RabbitMQ也有相似的权限管理。在RabbitMQ中能够虚拟消息服务器VirtualHost,每一个VirtualHost至关月一个相对独立的RabbitMQ服务器,每一个VirtualHost之间是相互隔离的。exchange、queue、message不能互通。
在RabbitMQ中没法经过AMQP建立VirtualHost,能够经过如下命令来建立。node
rabbitmqctl add_vhost [vhostname]
如上图在建立完vhost后能够在All Virtual Host标签看到新建的VirtualHost。mysql
一般在权限管理中主要包含三步:linux
新建用户正则表达式
rabbitmqctl add_user wyt wyt
配置权限sql
set_permissions [-p <vhostpath>] <user> <conf> <write> <read>
其中, 的位置分别用正则表达式来匹配特定的资源,如数据库
'^(amq.gen.*|amq.default)$'
能够匹配server生成的和默认的exchange,’^$’不匹配任何资源服务器
示例:咱们赋予superrd在“/”下面的所有资源的配置和读写权限。spa
rabbitmqctl set_permissions -p / superrd ".*" ".*" ".*"
注意”/”表明virtual host为“/”这个“/”和linux里的根目录是有区别的并非virtual host为“/”能够访问因此的virtual host,把这个“/”理解成字符串就行。code
配置角色orm
rabbitmqctl set_user_tags [user] [role]
RabbitMQ中的角色分为以下五类:none、management、policymaker、monitoring、administrator
官方解释以下:
management User can access the management plugin policymaker User can access the management plugin and manage policies and parameters for the vhosts they have access to. monitoring User can access the management plugin and see all connections and channels as well as node-related information. administrator User can do everything monitoring can do, manage users, vhosts and permissions, close other user’s connections, and manage policies and parameters for all vhosts.
none
不能访问 management plugin
management
用户能够经过AMQP作的任何事外加:
列出本身能够经过AMQP登入的virtual hosts
查看本身的virtual hosts中的queues, exchanges 和 bindings
查看和关闭本身的channels 和 connections
查看有关本身的virtual hosts的“全局”的统计信息,包含其余用户在这些virtual hosts中的活动。
policymaker
management能够作的任何事外加:
查看、建立和删除本身的virtual hosts所属的policies和parameters
monitoring
management能够作的任何事外加:
列出全部virtual hosts,包括他们不能登陆的virtual hosts
查看其余用户的connections和channels
查看节点级别的数据如clustering和memory使用状况
查看真正的关于全部virtual hosts的全局的统计信息
administrator
policymaker和monitoring能够作的任何事外加:
建立和删除virtual hosts
查看、建立和删除users
查看建立和删除permissions
关闭其余用户的connections
以下示例将wyt设置成administrator角色。
rabbitmqctl set_user_tags wyt administrator