zoukankan      html  css  js  c++  java
  • RabbitMQ使用教程(二)RabbitMQ用户管理,角色管理及权限设置

    上一篇博客 RabbitMQ使用教程(一)RabbitMQ环境安装配置及Hello World示例 中,我们成功的安装好了RabbitMQ环境,并通过一个Java客户端示例了解了用生产者来发布消息,用消费者来消费消息。

    本篇博客主要讲解下RabbitMQ如何管理用户(新增/删除/修改密码),如何给用户设置角色,如何设置用户权限,接下来,我们一一讲解。

    1. 用户管理

    1.1 查看用户列表

    RabbitMQ安装完成后,会有一个默认用户(guest guest),那么我们如何查看用户列表呢?

    有2种方式,第1种是登录管理后台http://localhost:15672/,在界面中查看:

    第2种方式是通过命令查看:

    cd E:Program FilesRabbitMQ Server
    abbitmq_server-3.7.15sbin
    
    rabbitmqctl.bat list_users
    

    注意:第1个命令中的路径修改为你机器RabblitMQ的安装路径。

    1.2 新建用户

    在实际的使用过程中,不可能只存在这1个用户,有时我们需要新建1个用户给到开发人员使用,比如新建个用户developer 123456。

    仍然有2种方式,第1种方式是通过管理后台新建:

    第2种方式是通过命令新增:

     rabbitmqctl.bat add_user developer 123456
    

    细心的网友也许会问为啥用户guest的tags是[administrator],而新建的用户developer的tags是[]呢,别着急,这一点会在下面的2.角色设置中讲解。

    1.3 删除用户

    在实际使用过程中,删除用户的场景肯定也是存在的,比如我想把刚刚新建的用户developer删除掉。

    仍然有2种方式,第1种方式是通过管理后台新建:

    第2种方式是通过命令删除:

    rabbitmqctl.bat delete_user developer
    

    因为后面还要使用用户developer,删除完可以再新增回来。

    1.4 修改密码

    可能有人会觉得123456这种密码,太简单了,不安全,我要修改成developer123456。

    仍然有2种方式,第1种方式是通过管理后台修改密码:

    第2种方式是通过命令修改密码:

    rabbitmqctl change_password developer developer123456
    

    2. 角色设置

    RabbitMQ中主要有administrator,monitoring,policymaker,management,impersonator,none几种角色。

    默认的用户guest是administrator角色,新建的developer用户没有设置角色,即为none,如果我们想把developer用户设置为administrator角色,第1种方式是通过界面修改:

    也可以通过以下命令来修改:

    rabbitmqctl.bat set_user_tags developer administrator
    

    也可以给用户设置多个角色,如给用户developer设置administrator,monitoring:

    rabbitmqctl.bat set_user_tags developer administrator monitoring
    

    注意:如果是设置多个角色,管理界面用,分隔,命令用空格分隔。

    关于这几种角色之间的区别,目前我还没有看到很好的文章讲解的很清楚,为了不误导用户,这里就先不讲解了,

    暂且先设置为超级管理员administrator即可。

    3. 权限配置

    3.1 设置用户权限

    让我们适当修改下上篇博客中的生产者类,使用新建的用户developer:

    package com.zwwhnly.springbootaction.rabbitmq.helloworld;
    
    import com.rabbitmq.client.Channel;
    import com.rabbitmq.client.Connection;
    import com.rabbitmq.client.ConnectionFactory;
    
    import java.io.IOException;
    import java.util.concurrent.TimeoutException;
    
    public class Producer {
        private final static String QUEUE_NAME = "hello";
    
        public static void main(String[] args) throws IOException, TimeoutException {
            // 创建连接
            ConnectionFactory factory = new ConnectionFactory();
            // 设置 RabbitMQ 的主机名
            factory.setHost("localhost");
    
            factory.setUsername("developer");
            factory.setPassword("developer123456");
            factory.setPort(5672);
    
            // 创建一个连接
            Connection connection = factory.newConnection();
            // 创建一个通道
            Channel channel = connection.createChannel();
            // 指定一个队列,不存在的话自动创建
            channel.queueDeclare(QUEUE_NAME, false, false, false, null);
            // 发送消息
            String message = "Hello World!";
            channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
            System.out.println(" [x] Sent '" + message + "'");
            // 关闭频道和连接
            channel.close();
            connection.close();
        }
    }
    

    运行代码,发现代码报错了,队列没有创建成功:

    这是为什么呢?让我们使用developer用户登录管理后台,看下developer用户与默认的guest用户的区别:

    由此我们可以看出,是因为我们没有设置developer用户可以访问的Virtual host导致的。

    执行如下命令:

    rabbitmqctl set_permissions -p / developer ".*" ".*" ".*"
    

    此时再运行代码,发现队列新建成功,消息发布成功:

    3.2 查看(指定vhostpath)所有用户的权限

    rabbitmqctl  list_permissions
    

    查看virtual host为/的所有用户权限:

    rabbitmqctl  list_permissions -p /
    

    3.3 查看指定用户的权限

    查看developer用户的权限:

    rabbitmqctl  list_user_permissions developer
    

    3.4 清除用户权限

    清除developer用户的权限:

    rabbitmqctl  clear_permissions developer
    

    4. 源码及参考

    源码地址:https://github.com/zwwhnly/springboot-action.git,欢迎下载。

    windows下 安装 rabbitMQ 及操作常用命令

    朱忠华《RabbitMQ实战指南》

  • 相关阅读:
    前端安全
    关于HTTPS的概念性了解
    数组去重
    防抖与节流
    对meta标签的再次认识
    关于路由, 我好奇的那些点
    关于构造函数,实例,原型对象一纯手工的理解
    数据库查找操作-java
    python之图像加载和简单处理
    python之excel表格操作
  • 原文地址:https://www.cnblogs.com/zwwhnly/p/10918665.html
Copyright © 2011-2022 走看看