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

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

1. 用户管理

1.1 查看用户列表

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

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

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

cd E:\Program Files\RabbitMQ Server\rabbitmq_server-3.7.15\sbin

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实战指南》

RabbitMQ使用教程(二)RabbitMQ用户管理,角色管理及权限设置的更多相关文章

  1. RabbitMQ入门教程(二):简介和基本概念

    原文:RabbitMQ入门教程(二):简介和基本概念 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn ...

  2. RabbitMQ官方教程二 Work Queues(GOLANG语言实现)

    RabbitMQ官方教程二 Work Queues(GOLANG语言实现) 在第一个教程中,我们编写了程序来发送和接收来自命名队列的消息. 在这一部分中,我们将创建一个工作队列,该队列将用于在多个wo ...

  3. MySQL 8.0用户和角色管理

    MySQL 8.0用户和角色管理 MySQL8.0新加了很多功能,其中在用户管理中增加了角色的管理,默认的密码加密方式也做了调整,由之前的sha1改为了sha2,同时加上5.7的禁用用户和用户过期的设 ...

  4. Oracle 用户、角色管理简介

    Oracle 用户.角色管理简介 by:授客 QQ:1033553122 创建用户 形式1:创建名为testacc2的用户 CREATE USER testacc2 IDENTIFIED BY abc ...

  5. 一、Vim编辑器 二、用户和组管理 三、软件的安装(jdk,mysql) 四、Shell编程

    一.Vim编辑器的使用 1. vim编辑器的运行模式 编辑模式:等待用户编辑命令的输入 插入模式:编辑文本内容 命令模式:执行命令 2. 使用 :vim 文件名 3. 查看当前vim编辑器介绍:vim ...

  6. MongoDB用户,角色管理 --- MongoDB基础用法(三)

    用户管理 用户创建 MongoDB采用基于角色的访问控制(RBAC)来确定用户的访问. 授予用户一个或多个角色,确定用户对MongoDB资源的访问权限和用户可以执行哪些操作. 用户应该只有最小权限集才 ...

  7. oracle中给某个用户某张表的权限设置

    今天碰到需要给数据库上某一个用户,开通其中2张表的查询权限,方法如下: grant select on bas_checkcycle to jdc;这个是整个语句. 语句分析: grant selec ...

  8. ubuntu 普通用户运行virt-manager时libvirt权限设置

    error: Failed to connect socket to '/var/run/libvirt/libvirt-sock': Permission deniederror: failed t ...

  9. RabbitMQ使用教程(四)如何通过持久化保证消息99.99%不丢失?

    1. 前情回顾 RabbitMQ使用教程(一)RabbitMQ环境安装配置及Hello World示例 RabbitMQ使用教程(二)RabbitMQ用户管理,角色管理及权限设置 RabbitMQ使用 ...

随机推荐

  1. 剑指offer24:判断一个二叉树的后序遍历序列是否为二叉搜索树的后序遍历序列

    public static boolean isBSTSequence(int[] s,int l, int r) { if (s == null || r <= 0) return false ...

  2. hdu-5792 World is Exploding(容斥+树状数组)

    题目链接: World is Exploding Time Limit: 2000/1000 MS (Java/Others)     Memory Limit: 65536/65536 K (Jav ...

  3. ISO文件怎么安装

    iso是光盘映像文件,打开iso文件有几种方法:1.使用光盘映像工具软件或者虚拟光驱才能打开iso文件.像软碟通(UItraISO)就是一个很好的光盘映像工具软件,使用它就可以打开iso文件,提取里面 ...

  4. ACM学习历程—HDU2068 RPG的错排(组合数学)

    Description 今年暑假杭电ACM集训队第一次组成女生队,其中有一队叫RPG,但做为集训队成员之一的野骆驼竟然不知道RPG三个人具体是谁谁.RPG给他机会让他猜猜,第一次猜:R是公主,P是草儿 ...

  5. 结合Django+celery二次开发定时周期任务

    需求: 前端时间由于开发新上线一大批系统,上完之后没有配套的报表系统.监控,于是乎开发.测试.产品.运营.业务部.财务等等各个部门就跟那饥渴的饿狼一样需要 各种各样的系统数据满足他们.刚开始一天一个还 ...

  6. ogg概叙、架构、进程

    一. OGG 概述 OGG 全称Oracle Golden Gate. 历史: Golden Gate公司于1995年成立于美国加州旧金山,它的名称源自旧金山闻名于世的金门大桥.两位创始人Eric F ...

  7. Nuget-QRCode:QRCoder

    ylbtech-Nuget-QRCode:QRCoder 1.返回顶部   2.返回顶部   3.返回顶部   4.返回顶部   5.返回顶部 0. https://github.com/codebu ...

  8. Java类加载原理解析(转)

    1 基本信息 每个开发人员对java.lang.ClassNotFoundExcetpion这个异常肯定都不陌生,这背后就涉及到了java技术体系中的类加载.Java的类加载机制是技术体系中比较核心的 ...

  9. openStack cinder 在往虚拟机上挂载云磁盘时总是提示挂在错误 最后找到原因原来是指定挂载云磁盘的虚拟机被锁定

    openStack 虚拟机的锁定功能是一个为了保护虚拟机 被误删除的一项创新共! 在VMs锁定状态下,一大部分针对此锁定的虚拟机都是无法执行的!! 需要进行相应的操作前,请注意解锁指定虚拟机,操作完成 ...

  10. strTemp.Format ("%.*lf",3,600.0);

    CString strTemp; strTemp.Format ("%.*lf",3,600.0); 这句话的含义?求指教   优质解答 这就是一个格式化输出,分号之前的CStri ...