标签:
一、开启权限认证
1.windows下的mongodb开启权限认证
C:\Users\Administrator>sc delete MongoDB //原来创建的服务如果没有开启 则删除 [SC] DeleteService 成功 C:\Users\Administrator>mongod --dbpath "E:\MongoDB\data\db" --logpath "E:\MongoDB\data\log\MongoDB.log" -auth --install --serviceName "MongoDB" //-auth 参数 开启权限认证
关闭权限认证就是去掉auth参数重新启动mongodb即可
2.Linux下的mongodb开启权限认证
启动配置中加入 auth=true 即可
二、创建用户
创建语法:createUser(2.6之前版本为addUser)
createUser 的参数 {user:"用户名",pwd:"密码",customData:"对当前用户的描述",roles:[{role:"角色",db:"对应角色的数据库"}]}
mongodb内建了几个数据库角色类型:
1.read 可执行方法:find
2.readWrite 可执行方法:find,update,remove,insert
3.dbAdmin 管理数据库
4.dbOwner 1,2,3个权限的集合
5.userAdmin 该角色的用户可以管理其它角色的用户
db.createUser({user:"test",pwd:123456,roles:[{role:"read",db:"test"}]}) //创建一个在test数据库上只读的test用户 Successfully added user: { "user" : "test", "roles" : [ { "role" : "read", "db" : "test" } ] } [c:\~]$ mongo -u test -p 123456 //exit 退出后用刚才创建的帐号登录 MongoDB shell version: 2.6.5 connecting to: test //默认连接到test show dbs //显示数据库被拒绝 2015-09-17T12:03:20.445+0800 listDatabases failed:{ "ok" : 0, "errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }", "code" : 13 } at src/mongo/shell/mongo.js:47 show tables //显示test数据库上的表被允许 local localtest system.indexes system.profile user3_collection
三、创建角色
创建格式:
db.createRole({
role:"角色名字",
privileges:[
{resource:{db:"数据库名字",collection:"集合名 不填则是任意集合"},actions:["权限名称"]}
],
roles:[]
})
> db.createRole({ role:"profile_find", privileges:[ {resource:{db:"test",collection:"system.profile"},actions:["find"]} ], roles:[] }) { "role" : "profile_find", "privileges" : [ { "resource" : { "db" : "test", "collection" : "system.profile" }, "actions" : [ "find" ] } ], "roles" : [ ] }
标签:
原文地址:http://www.cnblogs.com/buexplain/p/4816028.html