mongodb用户权限管理讲解

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
简介:

mongodb在2.4最新版本中对用户权限管理做了全新的调整,把权限细化了,增强了安全性,越来越像mysql的权限管理了。


一、2.4之前的版本用户管理

1、创建某个数据库的管理用户


1.1、进入weiw数据库:

>use weiw;


1.2、添加用户(读写权限,readOnly-->false):

>db.addUser("java","java");默认是拥有weiw数据库所有权限

>db.addUser("java1","java1",true);拥有这个数据库的只读权限


1.3、查看一下所有的用户

>db.system.users.find();


{ "_id" : ObjectId("4e02a89fb841deb5fda3e5e2"), "user" : "java", "readOnly" : fa

lse, "pwd" : "59cf7cc156874cbd35cb00869126f569" }


1.4、删除用户

>db.system.users.remove({user:"java1"});

>db.removeUser("java1");


2、创建超级用户

2.1、进入admin数据库

>use admin


2.2、在admin中创建的所有用户都是超级用户,可以操作任何的数据库

>db.addUser("admin","admin");默认是拥有所有数据库所有权限

>db.addUser("admin1","admin",true);拥有所有数据库的只读权限


二、2.4之后的版本对用户权限管理这块做了改进,越来越像mysql了,建议大家使用2.4之后的权限管理。


2.4版本的权限管理主要分为:数据库的操作权限、数据库用户的管理权限、集群的管理权限,建议由超级用户在admin数据库中管理这些用户。不过依然兼容2.4版本之前的用户管理方法。


1、进入admin数据库

>admin


2、添加一个对app数据库有只读权限,对app_log拥有读写权限的用户app,但是不对admin数据库有任何操作权限,不能添加任何用户。

>db.addUser({

user: "app",

pwd:'1q2w3e4r',

roles:[],

otherDBRoles:

{

app: [ "read" ],

app_log: [ "readWrite" ]

}

})

>db.addUser({user:'app',pwd:'1q2w3e4r',roles:["readWrite"]})#对所在数据库有读写权限


3、查看用户

> db.system.users.find()

{ "_id" : ObjectId("528ac7d4bf62beb8249db527"), "user" : "app", "pwd" : "c5be065694f328e0ac6629e846d32e0f", "roles" : [ ], "otherDBRoles" : { "app" : [ "read" ], "app_log" : [ "readWrite" ] } }


添加用户时的user就是用户名字,pwd就是密码,roles指定用户所拥有的权限,otherDBRoles指的是除roles之外对其他数据库所拥有的权限,格式就是个字典。


三、以下是roles中的权限说明:


read 指定数据库的只读权限,拥有以下权限:


aggregate,checkShardingIndex,cloneCollectionAsCapped,collStats

count,dataSize,dbHash,dbStats,distinct,filemd5

geoNear,geoSearch,geoWalk,group

mapReduce (inline output only.),text (beta feature.)


readWrite 拥有指定数据库的读写权限,除了具有read权限,还拥有以下权限:


cloneCollection (as the target database.),convertToCapped

create (and to create collections implicitly.)

drop(),dropIndexes,emptycapped,ensureIndex()

findAndModify,mapReduce (output to a collection.)

renameCollection (within the same database.)


read和readWrite只要就是对库中表的操作权限


dbAdmin 指定数据库的管理权限


clean,collMod,collStats,compact,convertToCapped

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

enableSharding,flushRouterConfig,fsync,db.fsyncUnlock()

getCmdLineOpts,getLog,getParameter,getShardMap,getShardVersion

hostInfo,db.currentOp(),db.killOp(),listDatabases,listShards

logRotate,moveChunk,movePrimary,netstat,removeShard,unsetSharding

repairDatabase,replSetFreeze,replSetGetStatus,replSetInitiate

replSetMaintenance,replSetReconfig,replSetStepDown,replSetSyncFrom

resync,serverStatus,setParameter,setShardVersion,shardCollection

shardingState,shutdown,splitChunk,splitVector,split,top,touch


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

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

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

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



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

相关实践学习
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
相关文章
|
7月前
|
缓存 NoSQL Java
Spring Session MongoDB管理会话
Spring Session MongoDB管理会话
60 0
|
9月前
|
NoSQL MongoDB 数据库
mongodb用户权限管理
用户权限管理简要说明
609 0
|
NoSQL MongoDB 数据库
分布式服务器框架之Server.Core库中实现YFUniqueEntity、YFUniqueIDBase 管理MongoDB 自定义Id的自增
YFUniqueEntity是数据库中的结构,GetUniqueID函数中会根据Type和自增步长去数据库中寻找该类型的当前ID是多少,然后会用当前的Id去加上步长,把更新后的新ID插入到MongoDB中记录着ID的那张表里。
|
SQL NoSQL MongoDB
分布式服务器框架之Servers.Core库中实现MongoDB对象实体类 管理对象ID
MongoDB中的ID是一个hash码,和传统的关系数据库相比MongoDB没有办法实现ID的自增,如果需要ID自增的话,所以要自己管理ID,并且把对应类型的ID写入到一个专门的Collection(其实就是Sql中的Table)里面去,每次创建新对象的时候,都要取到该类型当前的ID,然后在这个基础上+1,比如当前是角色的ID是1,又创建了一个新的角色,要在原来的基础上+1 ID=2。今天先把MongoDB的对象实体基类实现了。
|
NoSQL 安全 MongoDB
高可用mongodb集群(分片+副本):用户权限配置
高可用mongodb集群(分片+副本):用户权限配置
362 0
|
NoSQL MongoDB 数据库
MongoDB 用户角色管理
MongoDB 服务默认是没有账号密码的,客户端连接上即可进行各种操作。如果在配置文件中,指定了auth=true,即开启了认证,那么客户端连接后需要认证才能执行操作。
MongoDB 用户角色管理
|
存储 JSON NoSQL
4.0版本以上mongodb在Windows下载安装-添加Windows服务-安装可视化工具管理数据教程
4.0版本以上mongodb在Windows下载安装-添加Windows服务-安装可视化工具管理数据教程
158 0
4.0版本以上mongodb在Windows下载安装-添加Windows服务-安装可视化工具管理数据教程
|
NoSQL 数据库 索引
Mongodb数据库创建数据库并赋予不同的用户权限
mongo admin -u root -p 登录数据库               use testdb  #如过数据库不存在则创建        db.createUser({ user: "11", pwd: "11", roles: [{ role: "dbOwner", db: "testdb" }] })        rote:dbOwner 代表数据库所有者角色,拥有最高该数据库最高权限。
1485 0
|
NoSQL 前端开发 数据库
node MongoDB做管理后台接口(注册登录)
知识点 1、node 2、express 3、Mongoose 4、ES6 连接数据库 mongodb的地址我们一般需要配置在config文件中,做环境隔离,毕竟我们开发、测试、准生产、生产环境连接的数据库地址是不一样的,配置在config文件中,我们直接通过启动命令或者打包命令就可以切换到我们需要的mongodb地址,是开发必不可少的。
2249 0