MongoDB——权限管理
MongoDB——权限管理
MongoDB默认是没有权限验证的,但生产环境中,没有权限控制是很不安全的。
我们先不详谈太多概念,直接动手创建两个典型的账号:
- 超级管理员,类似sql server的sa账号或者mysql的root账号
- 单个数据库的读写权限账号
创建超级管理员
在没开启权限验证机制的时候,我们在“命令指示符”窗口用mongo打开MongoDB的shell。
使用“use”命令,切换到admin数据库,MongoDB用admin的system.users集合保存着用户信息。
> use admin
switched to db admin
>
使用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创建一个拥有读写权限的账号
退出之前的MongoDB的shell,可以直接关闭,然后重新打开一个“命令指示符”窗口或者使用“exit”命令。
使用之前创建的“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
>
给“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——权限管理的更多相关文章
- MongoDB权限管理之用户名和密码的操作
MongoDB默认是不需要输入用户名和密码,客户就可以登录的.但是出于安全性的考虑,我们还是要为其设置用户名和密码.本文主要介绍的是MongoDB权限管理之用户名和密码的操作,希望能对您有所帮助. 本 ...
- mongodb权限管理
说到mongodb就得先谈谈mongodb的用户组,和传统的关系型数据库不一样,mongodb并没有在创建应用时就要求创建权限管理组,所以类似于Robomongo这样的数据库可视化工具在创建conne ...
- 基于MongoDB权限管理+gridfs文件上传------云盘系统
学了一会Mongo,开始毕设的编写. 毕设目前一共分为如下模块 用户管理模块 管理员管理模块 文件管理模块 分享模块 目前已经完成了权限管理部分的后端代码.上传下载已经实现Demo.先把权限弄好后在整 ...
- mongodb权限管理(转)
Mongodb 预定义角色 Mongodb 中预定义了一些角色,把这些角色赋予给适当的用户上,用户就只能进行角色范围内的操作. 数据库用户角色 (所有数据库都有) read 用户可以读取当前数据库的数 ...
- MongoDB 权限管理 用户名和密码的操作
在刚安装完毕的时候MongoDB都默认有一个admin数据库,而admin.system.users中将会保存比在其它数据库中设置的用户权限更大的用户信息. 当admin.system.users中 ...
- Mongodb 权限管理
- MongoDB3.X单机及shading cluster集群的权限管理(基于3.4.5)
mongodb集群的权限管理分为两部分,一部分是最常用的Role-Based Access Control,也就是用户名密码方式,这种验证方式一般出现在单机系统,或者集群中client端连接Mongo ...
- MongoDB账号管理及实践
此文已由作者温正湖授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 目前蜂巢(云计算基础服务)MongoDB上已经有数十个实例,其中不少是企业用户或公司内部产品用户的.用户多了 ...
- MongoDB和Java(7):MongoDB用户管理
最近花了一些时间学习了下MongoDB数据库,感觉还是比较全面系统的,涉及了软件安装.客户端操作.安全认证.副本集和分布式集群搭建,以及使用Spring Data连接MongoDB进行数据操作,收获很 ...
随机推荐
- DSO windowed optimization 代码 (3)
4 Schur Complement 部分信息计算 参考<DSO windowed optimization 公式>,Schur Complement 部分指 Hsc(\(H_{X\rho ...
- STM32F103X datasheet学习笔记---Interrupts and events
1.前言 本章主要介绍STM32中断和事件相关的内容 2.NVIC NVIC管理着包括内核异常等中断 主要特性 68个外部中断源(不包含16个内部中断线) 可编程优先级为16级 低延迟异常和中断处理 ...
- ES系列四、ES6.3常用api之文档类api
1.Index API: 创建并建立索引 PUT twitter/tweet/ { "user" : "kimchy", "post_date&quo ...
- Python3学习笔记21-实例属性和类属性
由于Python是动态语言,根据类创建的实例可以任意绑定属性. 给实例绑定属性的方法是通过实例变量,或者通过self变量: class Student(object): def __init__(se ...
- linux下混杂模式
混杂模式介绍: 混杂模式就是接收所有经过网卡的数据包,包括不是发给本机的包,默认情况下网卡只把发给本机的包(包括广播包)传递给上层程序,其它的包一律丢弃:简单的讲,混杂模式就是指网卡能接受所有通过它的 ...
- zabbix系列(八)zabbix添加对web页面url的状态监控
通过zabbi做web监控不仅仅可以监控到站点的响应时间,还可以根据站点返回的状态码,或者响应时间做报警 1.对需要监控的主机添加web监控 在configuration—hosts 中打开主机列 ...
- 01 响应式页面-@media介绍,
我们为什么要写自适应的页面(响应式页面) 众所周知,电脑.平板.手机的屏幕是差距很大的,假如在电脑上写好了一个页面,在电脑上看起来不错,但是如果放到手机上的话,那可能就会乱的一塌糊涂,这时候怎么解决呢 ...
- Java基础93 JDBC连接MySQL数据库
本文知识点(目录): 1.什么是jdbc 2.jdbc接口的核心API 3.使用JDBC技术连接MySQL数据库的方法 4.使用Statement执行sql语句(DDL.DML. ...
- myeclipse2017 安装包及破解插件的下载
一:安装包下载 链接:http://pan.baidu.com/s/1miIFqha 密码:nz7h 二:操作步骤 因为工作中需要有多个MyEclipse去管理不同的项目组的工作,恰逢MyEclips ...
- impress.js
介绍一下 impress.js是一个非常炫酷的幻灯片展示框架,依靠CSS3技术. impress.js使用起来非常简单,下面就来简单介绍一下其用法. Start 首先,当然要引入impress.js. ...