欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

MongoDB入门系列(四):权限管理

程序员文章站 2022-08-05 20:01:59
一、概述 本篇文章主要介绍如何创建用户和角色相关概念,同时对角色的添加和删除做了相关介绍。 版本:3.6.2 二、角色相关概念 1.数据库用户角色 read:该角色拥有数据的只读权限,系统集合以及system.indexes,system.js,system.namespaces集合除外。 read ......

一、概述

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

 

版本: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 admin;

db.system.users.remove({"user":"root","db":"admin"})

MongoDB入门系列(四):权限管理

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

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

1.创建只读用户

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

use test

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

MongoDB入门系列(四):权限管理

2.验证权限

MongoDB入门系列(四):权限管理

提示没有权限插入集合。

3.添加角色权限

use admin

---需要切换到root角色用户才能修改system相关的集合
db.auth("dba","dba")

db.system.users.update(
{"user":"test","db":"test"},
{$push:{"roles":{"role":"readWrite","db":"test"}}}
);

注意:用户数据库权限虽然是在用户数据库创建,但是所有的用户信息都存储在admin数据库下的system.users集合中。

MongoDB入门系列(四):权限管理

 

再次使用test用户执行插入测试

MongoDB入门系列(四):权限管理

已经测试成功

4.删除角色权限

---切换到admin库
use admin;
---验证权限
db.auth("dba","dba")
---更新用户表,删除test用户readWrite角色
db.system.users.update(
{"user":"test","db":"test"},
{$pull:{"roles":{"role":"readWrite"}}}
);

MongoDB入门系列(四):权限管理

test用户readWrite角色已删除

 

 

 

 

 

备注:

    作者:pursuer.chen

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

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

《欢迎交流讨论》