MongoDB——权限管理

MongoDB默认是没有权限验证的,但生产环境中,没有权限控制是很不安全的。

我们先不详谈太多概念,直接动手创建两个典型的账号:

  • 超级管理员,类似sql server的sa账号或者mysql的root账号
  • 单个数据库的读写权限账号

创建超级管理员

  1. 在没开启权限验证机制的时候,我们在“命令指示符”窗口用mongo打开MongoDB的shell。

  2. 使用“use”命令,切换到admin数据库,MongoDB用admin的system.users集合保存着用户信息。

     > use admin
    switched to db admin
    >
  3. 使用db.createUser方法来创建用户,具体的说明,请参考官网文档

     > db.createUser(
    ... {
    ... user: "sa",
    ... pwd: "123",
    ... roles: [ { role: "__system", db: "admin" } ]
    ... }
    ... )
    Successfully added user: {
    "user" : "sa",
    "roles" : [
    {
    "role" : "__system",
    "db" : "admin"
    }
    ]
    }
    >

这样我们就创建了一个账号:sa,密码:123,拥有“__system”角色的权限,关于“__system”角色的具体说明,请参考官网文档

警告:不要把拥有“__system”角色的账号分配给系统程序使用

开启权限验证

MongoDB学习——基础入门这一篇中,我们将MongoDB安装到window服务的时候,创建了一个“mongod.cfg"配置文件,现在我们给配置文件修改为如下:

systemLog:
destination: file
path: D:\Program Files\MongoDB\Server\3.0\log\mongod.log
storage:
dbPath: D:\Program Files\MongoDB\Server\3.0\db
# 开启验证
security:
authorization: enabled

重新启动后,MongoDB的操作就需要给客户端授权后才能正常的工作了。

给test创建一个拥有读写权限的账号

  1. 退出之前的MongoDB的shell,可以直接关闭,然后重新打开一个“命令指示符”窗口或者使用“exit”命令。

  2. 使用之前创建的“sa”账号登陆,登陆用到“db.auth"方法,如下所示:

     > exit
    bye C:\Users\**>mongo
    MongoDB shell version: 3.0.6
    connecting to: test
    > use admin
    switched to db admin
    > db.auth("sa","123")
    1
    >
  3. 给“test”数据库创建一个账号:testUser,密码:123,拥有“readWrite”角色的权限

     > use test
    switched to db test
    > db.createUser(
    ... {
    ... user: "testUser",
    ... pwd: "123",
    ... roles: [ { role: "readWrite", db: "test" } ]
    ... }
    ... )
    Successfully added user: {
    "user" : "testUser",
    "roles" : [
    {
    "role" : "readWrite",
    "db" : "test"
    }
    ]
    }
    >

MongoDB中用户的角色说明

read

数据库的只读权限,包括:

aggregate,checkShardingIndex,cloneCollectionAsCapped,collStats,count,dataSize,dbHash,dbStats,distinct,filemd5,mapReduce (inline output only.),text (beta feature.)geoNear,geoSearch,geoWalk,group

readWrite

数据库的读写权限,包括:

	cloneCollection (as the target database.),convertToCapped,create (and to create collections implicitly.),renameCollection (within the same database.)findAndModify,mapReduce (output to a collection.) drop(),dropIndexes,emptycapped,ensureIndex()

read的所有权限

dbAdmin

clean,collMod,collStats,compact,convertToCappe create,db.createCollection(),dbStats,drop(),dropIndexes ensureIndex(),indexStats,profile,reIndex renameCollection (within a single database.),validate

userAdmin角色

数据库的用户管理权限

clusterAdmin角色

集群管理权限(副本集、分片、主从等相关管理),包括:

addShard,closeAllDatabases,connPoolStats,connPoolSync,_cpuProfilerStart_cpuProfilerStop,cursorInfo,diagLogging,dropDatabase
shardingState,shutdown,splitChunk,splitVector,split,top,touchresync
serverStatus,setParameter,setShardVersion,shardCollection
replSetMaintenance,replSetReconfig,replSetStepDown,replSetSyncFrom
repairDatabase,replSetFreeze,replSetGetStatus,replSetInitiate
logRotate,moveChunk,movePrimary,netstat,removeShard,unsetSharding
hostInfo,db.currentOp(),db.killOp(),listDatabases,listShardsgetCmdLineOpts,getLog,getParameter,getShardMap,getShardVersion
enableSharding,flushRouterConfig,fsync,db.fsyncUnlock()

readAnyDatabase

任何数据库的只读权限(和read相似)

readWriteAnyDatabase

任何数据库的读写权限(和readWrite相似)

userAdminAnyDatabase

任何数据库用户的管理权限(和userAdmin相似)

dbAdminAnyDatabase

任何数据库的管理权限(dbAdmin相似)

__system

什么权限都有

MongoDB——权限管理的更多相关文章

  1. MongoDB权限管理之用户名和密码的操作

    MongoDB默认是不需要输入用户名和密码,客户就可以登录的.但是出于安全性的考虑,我们还是要为其设置用户名和密码.本文主要介绍的是MongoDB权限管理之用户名和密码的操作,希望能对您有所帮助. 本 ...

  2. mongodb权限管理

    说到mongodb就得先谈谈mongodb的用户组,和传统的关系型数据库不一样,mongodb并没有在创建应用时就要求创建权限管理组,所以类似于Robomongo这样的数据库可视化工具在创建conne ...

  3. 基于MongoDB权限管理+gridfs文件上传------云盘系统

    学了一会Mongo,开始毕设的编写. 毕设目前一共分为如下模块 用户管理模块 管理员管理模块 文件管理模块 分享模块 目前已经完成了权限管理部分的后端代码.上传下载已经实现Demo.先把权限弄好后在整 ...

  4. mongodb权限管理(转)

    Mongodb 预定义角色 Mongodb 中预定义了一些角色,把这些角色赋予给适当的用户上,用户就只能进行角色范围内的操作. 数据库用户角色 (所有数据库都有) read 用户可以读取当前数据库的数 ...

  5. MongoDB 权限管理 用户名和密码的操作

    在刚安装完毕的时候MongoDB都默认有一个admin数据库,而admin.system.users中将会保存比在其它数据库中设置的用户权限更大的用户信息.  当admin.system.users中 ...

  6. Mongodb 权限管理

  7. MongoDB3.X单机及shading cluster集群的权限管理(基于3.4.5)

    mongodb集群的权限管理分为两部分,一部分是最常用的Role-Based Access Control,也就是用户名密码方式,这种验证方式一般出现在单机系统,或者集群中client端连接Mongo ...

  8. MongoDB账号管理及实践

    此文已由作者温正湖授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 目前蜂巢(云计算基础服务)MongoDB上已经有数十个实例,其中不少是企业用户或公司内部产品用户的.用户多了 ...

  9. MongoDB和Java(7):MongoDB用户管理

    最近花了一些时间学习了下MongoDB数据库,感觉还是比较全面系统的,涉及了软件安装.客户端操作.安全认证.副本集和分布式集群搭建,以及使用Spring Data连接MongoDB进行数据操作,收获很 ...

随机推荐

  1. 2、SpringBoot接口Http协议开发实战8节课(7-8)

    7.SpringBoot2.x文件上传实战 简介:讲解HTML页面文件上传和后端处理实战 1.讲解springboot文件上传 MultipartFile file,源自SpringMVC 1)静态页 ...

  2. python读写文件字符集

    操作I/O的能力是由操作系统的提供的,每一种编程语言都会把操作系统提供的低级C接口封装起来供开发者使用,Python也不例外.  读写文件是需要请求操作系统去操作磁盘的  所以默认的编码就是你平台的编 ...

  3. js实现页面遮罩层,并且阻止页面body滚动

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. 同步阿里云镜像到本地,在本地搭建YUM仓库

    1.下载阿里云镜像repo文件 项目使用CentOS6系统,因此我下载的文件是: # CentOS-Base.repo # # The mirror system uses the connectin ...

  5. 使用Jyhon脚本和PMI模块监控WAS性能数据

    使用Jyhon脚本和PMI模块监控WAS性能数据的优点有: 1.可以使用非交互的方式远程获取数据 2.不需要图形化模块支持 3.对各种was版本的兼容性较高 4.使用方便,官方自带 缺点也有很多: 1 ...

  6. Shell 中test 单中括号[] 双中括号[[]] 的区别

    Shell test 单中括号[] 双中括号[[]] 的区别 在写Shell脚本的时候,经常在写条件判断语句时不知道该用[] 还是 [[]],首先我们来看他们的类别: $type [ [[ test ...

  7. cocos2d-x播放视频的处理

    cocos2d-x是支持直接播放视频的,用的是Native端的播放器,视频的默认层级是在cocos的层级之上,如果是想让视频上面有cocos的控件,只能将视频的UI层级放在最下面,这个方法网上已经有比 ...

  8. OCM_第十天课程:Section5—》数据仓库

    注:本文为原著(其内容来自 腾科教育培训课堂).阅读本文注意事项如下: 1:所有文章的转载请标注本文出处. 2:本文非本人不得用于商业用途.违者将承当相应法律责任. 3:该系列文章目录列表: 一:&l ...

  9. 缓存之EHCache(一)

    源文: http://blog.csdn.net/l271640625/article/details/20528573 一.简介 非常简单,而且易用.     ehcache 是一个非常轻量级的缓存 ...

  10. 并发之atomicInteger与CAS机制

    并发之atomic与CAS自旋锁 通过前几章的讲解我们知道i++这种类似操作是不安全的.针对这种情况,我们可能会想到利用synchronize关键字实现线程同步,保证++操作的原子性,的确这是一种有效 ...