一、概述

本篇文章主要介绍如何创建用户和角色相关概念,同时对角色的添加和删除做了相关介绍。

版本:3.6.2

二、角色相关概念

1.数据库用户角色

read:该角色拥有数据的只读权限,系统集合以及system.indexes,system.js,system.namespaces集合除外。

readWrite:该角色拥有对应数据库的读写权限,系统集合和system.js集合除外。

2.数据库管理角色

dbAdmin:该角色拥有指定数据库数据库管理权限,包括 system.indexes, system.namespaces, system.profile集合的操作权限。该角色不拥有所有非系统集合的读权限。

dbOwner:该角色拥有指定数据库的所有权限,该角色包括:readWrite、dbAdmin、userAdmin。

userAdmin:该角色拥有指定数据库用户和角色的管理权限。包括创建用户等。

3.群集管理角色

clusterAdmin:该角色拥有群集的所有权限。该角色包含clusterManager,clusterMonitor,hostManager 角色权限。同时还要删除数据库的权限。

clusterManager:该角色拥有群集的管理和监控权限,包括对local、config数据库的访问权限。同时该角色拥有分片和复制集的管理权限。

clusterMonitor:该角色拥有群集的监控权限。

hostManager:该角色拥有群集的监控和服务管理权限。

注意:这些角色只能在Admin数据库下创建

4.备份还原角色

backup:该角色拥有备份数据的权限。

restore:该角色拥有还原备份数据的权限。

注意:这些角色只能在Admin数据库下创建

5.所有数据库角色

该分类下面的角色权限和数据库角色权限一样,区别在于它拥有的是所有数据库的权限而不是指定数据库下的权限。但是不拥有system.*相关集合、local、config数据库的权限。

readAnyDatabase

readWriteAnyDatabase

userAdminAnyDatabase

dbAdminAnyDatabase

注意:这些角色只能在Admin数据库下创建

6.超级权限角色

root:该角色拥有所有权限,该角色包含readWriteAnyDatabase, dbAdminAnyDatabase, userAdminAnyDatabase, clusterAdmin roles, restore, and backup角色。

注意:该角色只能在创建在Admin库中

7.内部角色

__system:该角色为系统内部角色,比如复制集成员、mongos使用。

三、创建用户

1.创建用户

在admin中创建root角色用户

use admin;
db.createUser({
user:"dba",
pwd:"dba",
roles:[{role:"root",db:"admin"}]});

2.删除用户

use到具体的数据库下面去执行dropUser命令

use test;
db.dropUser("test");

注意:创建和删除用户都要在对应的数据库下。

四、向用户添加和删除角色

1.创建只读用户

切换到test数据库下创建read角色用户

use test

db.createUser(
{
user:"test",
pwd:"test",
roles:[{role:"read",db:"test"}
]
}
);

2.验证权限

提示没有权限插入集合。

3.修改用户权限

update命令会替换原有的权限

----更新用户权限
db.updateUser( "abc",
{
roles:[
{ role : "readWrite", db : "abc" }
]
}
);

如果是增加权限和回收权限使用以下命令:

增加权限

db.grantRolesToUser( "<username>", [ <roles> ], { <writeConcern> } )

The grantRolesToUser method takes the following arguments:

Parameter Type Description
user string The name of the user to whom to grant roles.
roles array An array of additional roles to grant to the user.
writeConcern document Optional. The level of write concern for the modification. The writeConcerndocument takes the same fields as the getLastError command.
db.grantRolesToUser("usertest", [{role:"readWrite", db:"testDB"},{role:"read", db:"testDB"}])

回收权限

db.revokeRolesFromUser( "<username>", [ <roles> ], { <writeConcern> } )

The revokeRolesFromUser method takes the following arguments:

Parameter Type Description
user string The name of the user from whom to revoke roles.
roles array The roles to remove from the user.
writeConcern document Optional. The level of write concern for the modification. The writeConcerndocument takes the same fields as the getLastError command.

五、密码管理

1.修改密码

db.updateUser(
"root",
{
pwd: "abc"
}
)

备注:

作者:pursuer.chen

博客:http://www.cnblogs.com/chenmh

本站点所有随笔都是原创,欢迎大家转载;但转载时必须注明文章来源,且在文章开头明显处给明链接,否则保留追究责任的权利。

《欢迎交流讨论》

MongoDB入门系列(四):权限管理的更多相关文章

  1. MongoDB的账户与权限管理及在Python与Java中的登陆

    本文主要介绍了MongoDB的账户新建,权限管理(简单的),以及在Python,Java和默认客户端中的登陆. 默认的MongoDB是没有账户权限管理的,也就是说,不需要密码即可登陆,即可拥有读写的权 ...

  2. MongoDB的账户与权限管理及在Python与Java中的登录

    本文主要介绍了MongoDB的账户新建,权限管理(简单的),以及在Python,Java和默认客户端中的登陆. 默认的MongoDB是没有账户权限管理的,也就是说,不需要密码即可登陆,即可拥有读写的权 ...

  3. C语言高速入门系列(四)

    C语言高速入门系列(四) C语言数组 ---------转载请注明出处:coder-pig 贴心小提示:假设图看不清晰可右键另存为,应该就非常清晰了; 注意上面的代码都要自己过一遍哦! 本节引言: 经 ...

  4. linux入门系列13--磁盘管理之RAID、LVM技术

    前一篇文章学习了磁盘分区.格式化.挂载等相关知识,本文将讲解RAID和LVM技术. 磁盘管理操作主要是运维人员用的较多,如果只是单纯的开发人员,可以先略过本文.但是在很多小公司里往往都是一人多用,运维 ...

  5. [转]C# 互操作性入门系列(四):在C# 中调用COM组件

    传送门 C#互操作系列文章: C# 互操作性入门系列(一):C#中互操作性介绍 C# 互操作性入门系列(二):使用平台调用调用Win32 函数 C# 互操作性入门系列(三):平台调用中的数据封送处理 ...

  6. linux入门系列12--磁盘管理之分区、格式化与挂载

    前面系列文章讲解了VI编辑器.常用命令.防火墙及网络服务管理,本篇将讲解磁盘管理相关知识. 本文将会介绍大量的Linux命令,其中有一部分在"linux入门系列5--新手必会的linux命令 ...

  7. MongoDB入门系列(一):基础概念和安装

    概述 MongoDB是目前非常流行的一种非关系型数据库,作为入门系列的第一篇本篇文章主要介绍Mongdb的基础概念知识包括命名规则.数据类型.功能以及安装等. 环境: OS:Windows Versi ...

  8. [Django]用户权限学习系列之权限管理界面实现

    本系列前三章: http://www.cnblogs.com/CQ-LQJ/p/5604331.htmlPermission权限基本操作指令 http://www.cnblogs.com/CQ-LQJ ...

  9. 一步一步Asp.Net MVC系列_权限管理总结(附MVC权限管理系统源码)

    在上一节中我们总结了关于权限控制的方式,我们这一节讲解关于权限控制中角色权限的授予处理等等并做本系列的总结. 首先,我们来谈谈权限控制中角色权限的控制,上一节只是针对权限拦截中比较粗的控制,如果我们需 ...

  10. MongoDB 学习笔记之 权限管理基础

    权限管理基础 MongoDB有很多用户roles,这里只是简单列举下命令的使用,具体的role的含义,请查阅官方文档. https://docs.mongodb.com/manual/referenc ...

随机推荐

  1. socket编程--相关函数--sendto();read();

    {1} 头文件:#include <sys/types.h>   #include <sys/socket.h>定义函数:int sendto(int s, const voi ...

  2. I like NetWorld

    liangfengbo.com ibobobo.com https.net.cn bobobo.com.cn scode.net scode.cc liangbolin.com linhe.cc li ...

  3. python_如何在列表、字典中筛选数据?

    实际问题有哪些? 过滤掉列表[3,9,-1,10.-2......] 中负数 筛选出字典{'li_ming':90,'xiao_hong':60,'li_kang':95,'bei_men':98} ...

  4. 函数式编程--lambda表达式对比匿名内部类

    从前面的整理中我们看出了,Lambda表达式其实是匿名内部类的一种简化,因此它可以部分取代匿名内部类. 1,Lambda表达式与匿名内部类存在如下相同点: 1),Lambda表达式与匿名内部类一样,都 ...

  5. NW.js 简介与使用

    简介 (1)以网络最流行的技术编写原生应用程序的新方法 (2)基于HTML5, CSS3, JS and WebGL而编写 (3)完全支持nodejs所有api及第三方模块 (4)可以使用DOM直接调 ...

  6. 达尔稳usb转RJ45的接口转换器(usb2.0接口)在ubuntu16.04中驱动(r8152)编译安装与使用

    淘宝买了usb转RJ45的接口转换器:https://detail.tmall.com/item.htm?id=524808012954&ali_refid=a3_430582_1006:11 ...

  7. awk使用正则精确匹配

    [root@localhost home]# cat file 5001][YRSD5-1][YRSD5-1-2][0203008400028411] 010102 5001][YRSD7-1][YR ...

  8. 聊聊js里面容易忽视的一些东西(1)

      JavaScript对象的创建方式 在JavaScript中,创建对象的方式包括两种:对象字面量和使用new表达式.对象字面量是一种灵活方便的书写方式,例如: 1 2 3 4 5 6 var o1 ...

  9. C++——函数的调用

    调用前先声明函数: >>若函数定义在调用点之前,则无需另外声明 >>若函数定义在调用点之后,则需要在调用函数前按如下形式声明函数原型(原型声明) 类型标识符   被调用函数名( ...

  10. JAVA常用知识点总结---集合篇

    一.Collection 与 Collections的区别:1. Collections:java.util.Collections 是一个包装类.它包含有各种有关集合操作的静态多态方法.此类不能实例 ...