mongo db

转载请注明出自:http://www.mrco.cn/article/5735b04fc49f11e762327991.html

搭建本博客刚遇到的一个问题,做个日记吧,相信从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的系统管理员,其它库的用户都需要靠这个管理员去创建   
01
> show dbs
02
admin  0.000GB
03
local  0.000GB
04
test   0.000GB
05
> use admin
06
switched to db admin
07
> db.createUser({ user:'testUser',pwd:'test123',roles:[{ role:'userAdminAnyDatabase',db:'admin' }] })
08
Successfully added user: {
09
    "user" : "testUser",
10
    "roles" : [
11
        {
12
            "role" : "userAdminAnyDatabase",
13
            "db" : "admin"
14
        }
15
    ]
16
}
17
> db.auth('testUser','test123')
第二步:找到你想要创建用户的库,然后创建一个myTestUser的用户
01
> use test
02
switched to db test
03
> db.createUser({ user:'myTestUser',pwd:'123456',roles:[{ role:'readWrite',db:'test' }]  })
04
Successfully added user: {
05
    "user" : "myTestUser",
06
    "roles" : [
07
        {
08
            "role" : "readWrite",
09
            "db" : "test"
10
        }
11
    ]
12
}
13
> db.auth('myTestUser','123456')
14
1
第三步:那么我们这个用户跟角色就创建完毕了。接下来我们需要关闭Mongodb服务.
1
>db.shutdownServer()
第四步:重启启动我们的Mongodb
1
./mongod --dbpath=../data --port=12121 --auth
第五步:重启完后我们再连接Mongodb就会提示需要用户名跟密码了
1
./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

猜你喜欢

转载自xinyuemengxing.iteye.com/blog/2317592