天天看点

MongoDB用户、角色和权限管理

一、概念理解

1、用户概念

Mongodb的用户是由 用户名+所属库名组成

例如:

登录mongo testdb1 ,创建用户testuser

<a href="mailto:br/"></a>

<a href="mailto:br/">2、角色概念 Mongodb的授权采用了角色授权的方法,每个角色包括一组权限。 Mongodb已经定义好了的角色叫内建角色,我们也可以自定义角色。 这儿主要介绍内建角色,Mongodb内建角色包括下面几类: 读写权限: read/readWrite 读写库的权限 数据库管理角色: dbAdmin 某数据库管理权限 userAdmin 某数据库用户的管理权限,包括创建用户,授权的管理 dbOwner 某数据库的所有者,拥有该库的所有权限,包括readWrite,dbAdmin和userAdmin权限 集群权限 : 备份和恢复角色: bakcup restore 所有数据库角色: readAnyDatabase readWriteAnyDatabase dbAdminAnyDatabase userAdminAnyDatabase 超级用户角色: root 内部角色 : __system 不建议使用</a>

<a href="mailto:br/">二、搭建认证环境和认证登录 1、找到mongodb配置文件,设置noauth=true 重启Mongodb后,登录admin账号,创建一个超级权限用户 use admin db.createUser({user:'root',pwd:'root',roles:[{ "role" : "root", "db" : "admin" }]});</a>

<a href="mailto:br/">2、关闭mongodb</a>

<a href="mailto:br/">3、启用认证参数 生成加密文件,并将加密文件拷贝到各节点 mkdir /usr/local/mongodb/keyfile openssl rand -base64 100 &gt; /usr/local/mongodb/keyfile/key chmod -R 600 /usr/local/mongodb/keyfile/key 修改各节点配置配置文件 auth = true keyFile = /usr/local/mongodb/keyfile/key</a>

<a href="mailto:br/">4、启动Mongodb</a>

<a href="mailto:br/">5、认证登录</a>

<a href="mailto:br/">use admin switched to db admin db.auth('root','root')</a>

<a href="mailto:br/">1</a>

<a href="mailto:br/">use hong switched to db hong show collections; liujing system.users db.liujing.find(); { "_id" : ObjectId("56f255b77fa46acddeb4507b"), "name" : "liujing" }</a>

<a href="mailto:br/">三、用户授权详解 1、创建用户并授权 语法:db.createUser({user:"UserName",pwd:"Password",roles:[{role:"RoleName",db:"Target_DBName"}]}) 首先选择在哪个库创建用户,如test:use test; 创建用户有3项需要提供:用户名,密码,角色列表 例如我要在test下面创建用testuser,密码为testpwd,角色列表包括test库的readWrite角色和userAdmin角色: db.createUser({user:"testuser",pwd:"testpwd",roles:[{role:"readWrite",db:"test"},{role:"userAdmin",db:"test"}]})</a>

<a href="mailto:br/">2、修改密码 首先进入目标库:use test db.changeUserPassword('testuser','testPWD');</a>

<a href="mailto:br/">3、添加角色 首先进入目标库:use test db.grantRolesToUser( "testuser", [ { role: "read",db:"admin"} ] )</a>

<a href="mailto:br/">4、回收角色权限 首先进入目标库:use test db.revokeRolesFromUser("testuser",[ { role: "read",db:"admin"} ] )</a>

<a href="mailto:br/">5、删除用户 首先进入目标库:use test db.dropUser("testuser")</a>

<a href="mailto:br/">四、注意事项</a>

<a href="mailto:br/">1、MongodbVOE版本太低,可能导致远程连接mongodb认证失败,建议升级版本或者更换其它GUI工具 2、远程连接Mongodb一定要把mongodb服务器的防火墙打开,否则连接不上</a>

<a href="http://blog.51cto.com/wjlking/1792629">http://blog.51cto.com/wjlking/1792629</a>

     本文转自1321385590 51CTO博客,原文链接:http://blog.51cto.com/linux10000/2061498,如需转载请自行联系原作者