博客首页MongoDB分类
MongoDB 3.X版本后的用户访问权限设置
发布时间:2016-05-13 18:45:35编辑:Mr.Co阅读(6065)
搭建本博客刚遇到的一个问题,做个日记吧,相信从Mongodb 2.X的同学升级到Mongodb 3.X后发现设置用户的方式不同了,而且网上的资料也相对少。由于我也是刚接触Mongodb所以也是查阅了好多文章跟资料才知道如何解决。希望能帮助到其它遇到这个问题的童鞋。
在Mongodb 2.X的版本中网上有很多帖子中介绍2.X的版本中默认是存在一个admin表,而且创建一个用户只需要先通过db.addUser()添加,然后通过db.auth()来赋予权限便可。
但是。。由于我用的是Mongodb 3.X的版本,所以按照2.X的帖子跟着实现起来是行不通的,我发现使用show dbs的时候系统里是没有admin表的存在,那怎么办呢?原来3.X的版本中默认是不显示admin的,我们可以手动的通过use admin切换到admin中,然后通过db.createUser()这个方法来创建用户。终于知道如何创建用户了。可是问题又来了。我刚开始以为Mongdb会跟Sql Server这种关系型数据库一样会创建一个统一的sa用户,可实际证明我的想法错了,Mongodb的用户是跟collection关联的。而且要给collection设置用户又必须要通过admin的超级用户来授权。反正这一连串的授权关系折腾了我半天。好了废话不多说。还是直接贴代码步骤直接。
第一步:先给admin库创建一个叫做testUser的系统管理员,其它库的用户都需要靠这个管理员去创建
> show dbs admin 0.000GB local 0.000GB test 0.000GB > use admin switched to db admin > db.createUser({ user:'testUser',pwd:'test123',roles:[{ role:'userAdminAnyDatabase',db:'admin' }] }) Successfully added user: { "user" : "testUser", "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ] } > db.auth('testUser','test123')第二步:找到你想要创建用户的库,然后创建一个myTestUser的用户
> use test switched to db test > db.createUser({ user:'myTestUser',pwd:'123456',roles:[{ role:'readWrite',db:'test' }] }) Successfully added user: { "user" : "myTestUser", "roles" : [ { "role" : "readWrite", "db" : "test" } ] } > db.auth('myTestUser','123456') 1第三步:那么我们这个用户跟角色就创建完毕了。接下来我们需要关闭Mongodb服务.
>db.shutdownServer()第四步:重启启动我们的Mongodb
./mongod --dbpath=../data --port=12121 --auth第五步:重启完后我们再连接Mongodb就会提示需要用户名跟密码了
./mongo localhost:12121/test -u myTestUser -p 123456这样就登陆进去了,这个用户登陆进去后只有读写权限,大家回过头再上去看看创建代码,里面的role是readWrite,这个就是给与的权限。
role的权限列表
1. 数据库用户角色:read、readWrite;
2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;
3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
4. 备份恢复角色:backup、restore;
5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
6. 超级用户角色:root
// 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
7. 内部角色:__system
转载请注明出自:http://www.mrco.cn/article/5735b04fc49f11e762327991.html