MongoDB创建一个用户自定义角色

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介:

前提条件


在数据库中创建一个角色,你必须有:   
    1.在该数据库资源上的createRole行为。    
    2.在该数据库上grantRole行为给新角色指定权限以及指定继承的角色。

内嵌角色userAdmin和userAdminAnyDatabase提供了它们各自资源的createRole和grantRole行为。


创建一个角色管理当前操作


下面的示例创建了角色manageOpRole,只提供了运行db.currentOp()和db.killOp()的权限。


1. 使用适当的权限连接到MongoDB。   
使用在前提条件部分指定的权限,连接到mongod或mongos。    
下面的过程创建了一个用户管理员siteUserAdmin:

1
2
3
4
5
6
7
8
use admin   
db.createUser(    
   {    
     user "siteUserAdmin" ,    
     pwd:  "password" ,    
     roles: [ { role:  "userAdminAnyDatabase" , db:  "admin"  } ]    
   }    
)

登录到MongoDB:   

1
mongo --port 27017 -u siteUserAdmin -p password --authenticationDatabase admin

siteUserAdmin拥有在admin以及其他数据库创建角色的权限。


2. 创建一个新的角色管理当前操作。   
manageOpRole有权限在多个数据库以及cluster资源操作。因此,你必须在admin数据库创建角色。

1
2
3
4
5
6
7
8
9
10
11
use admin   
db.createRole(    
    {    
      role:  "manageOpRole" ,    
      privileges : [    
        { resource: { cluster:  true  }, actions: [  "killop" "inprog"  ] },    
        { resource: { db:  "" , collection:  ""  }, actions: [  "killCursors"  ] }    
      ],    
      roles: []    
    }    
)

新角色被授权能杀掉任何操作。


警告:   
终止运行中的操作要极其小心。只使用db.killOp()来终止客户端发起的操作而不会终止内部数据库操作

内嵌的角色ClusterMonitor也提供了权限运行db.currentOp()及其他权限,内嵌的角色hostManager提供了权限运行db.killOp()以及其他权限。


创建一个角色运行mongostat


下面的示例创建一个角色mongostatRole提供了只有运行mongostat的权限。


1. 使用适当的权限连接到MongoDB。   
使用在前提条件部分指定的权限,连接到mongod或mongos。    
下面的过程创建了一个用户管理员siteUserAdmin:

1
2
3
4
5
6
7
8
use admin   
db.createUser(    
   {    
     user "siteUserAdmin" ,    
     pwd:  "password" ,    
     roles: [ { role:  "userAdminAnyDatabase" , db:  "admin"  } ]    
   }    
)

登录到MongoDB:   

1
mongo --port 27017 -u siteUserAdmin -p password --authenticationDatabase admin

siteUserAdmin拥有在admin以及其他数据库创建角色的权限。


2.创建一个新的角色来管理当前操作。   
mongostatRole有权限在cluster资源操作。因此,你必须在admin数据库创建角色。

1
2
3
4
5
6
7
8
9
10
use admin   
db.createRole(    
    {    
      role:  "mongostatRole" ,    
      privileges : [    
        { resource: { cluster:  true  }, actions: [  "serverStatus"  ] }    
      ],    
      roles: []    
    }    
)

内嵌的角色clusterMonitor也提供了权限运行mongostat以及其他权限。


参见:https://docs.mongodb.org/manual/tutorial/manage-users-and-roles/#create-role-to-manage-ops



















本文转自UltraSQL51CTO博客,原文链接: http://blog.51cto.com/ultrasql/1706466,如需转载请自行联系原作者



相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
缓存 NoSQL Shell
MongoDB系列-在复制集(replication)以及分片(Shard)中创建索引
在使用MongoDB时,在创建索引会涉及到在复制集(replication)以及分片(Shard)中创建,为了最大限度地减少构建索引的影响,在副本和分片中创建索引,使用滚动索引构建过程。
570 0
|
NoSQL 安全 MongoDB
mongodb设置用户账号密码登录
今天有个同事的项目中mongodb 被黑客攻占了,然后数据库被清掉,留下了一堆“案发现场”,还整了一个段话,附上给大家伙瞧瞧。。。。
2931 1
mongodb设置用户账号密码登录
|
NoSQL MongoDB 数据库
MongoDB v4.4.6安装、创建服务及Web客户端访问MongoDB详解
MongoDB v4.4.6安装、创建服务及Web客户端访问MongoDB详解
462 0
MongoDB v4.4.6安装、创建服务及Web客户端访问MongoDB详解
|
存储 监控 NoSQL
🍃MongoDB结合Koa2做用户登录验证
🍃MongoDB结合Koa2做用户登录验证
326 0
🍃MongoDB结合Koa2做用户登录验证
|
NoSQL MongoDB 索引
MongoDB创建、查看、删除索引
MongoDB创建、查看、删除索引
277 0
|
NoSQL MongoDB 索引
MongoDB 创建集合
MongoDB 创建集合
328 0
|
NoSQL MongoDB 索引
MongoDB创建、查看、删除索引
MongoDB创建、查看、删除索引
157 0
|
SQL 存储 NoSQL
MongoDB 在 2022 MongoDB 全球用户大会上发布新愿景,致力成为开发者数据平台提供商
引入一套统一的新功能,以满足开发者在构建现代应用程序方面日益增长的数据需求
MongoDB 在 2022 MongoDB 全球用户大会上发布新愿景,致力成为开发者数据平台提供商
|
NoSQL MongoDB 数据库
MongoDB 用户角色管理
MongoDB 服务默认是没有账号密码的,客户端连接上即可进行各种操作。如果在配置文件中,指定了auth=true,即开启了认证,那么客户端连接后需要认证才能执行操作。
MongoDB 用户角色管理