This website requires JavaScript.

记搬迁后Mongodb3.0.6启用认证权限设置

2018.08.08 16:59字数 2081阅读 173喜欢 0评论 2

Mongodb3.0.6启用认证权限设置

要开启认证模式,首先修改MongoDB的配置文件: /user/local/mongodb/bin/mongod.conf

修改配置:

# Turn on/off security.  Off is currently the default
#noauth=true
auth=true  #这个就是开启认证的配置

开启完成后重启MongoDB即可生效:

sudo service mongod restart

开启授权认证模式之前,需要先在MongoDB中创建一个管理员用户,MongoDB是不提供默认用户的。

下面介绍如何创建管理员用户:

1、首先切换到admin数据库,这个库的作用是用来存放MongoDB中所有的授权用户,2.6之后默认这个库是不存在的,我们先切换过来,在用的时候它会自动创建。

use admin

切换成功会显示

switched to db admin

2、创建用户,把下面代码负载进去执行。

db.createUser({
    "user" : "admin",
        "pwd": "123456",
       "roles" : [
            {role:"userAdminAnyDatabase", db: "admin"},
            {role:"readWriteAnyDatabase", db: "admin"}
    ]},
    { w: "majority" , wtimeout: 5000 }
)

MongoDB中内置了很多角色,我们可以直接使用。
角色可以设置多个:

"roles" : [
        {role:"userAdminAnyDatabase", db: "admin"},
        {role:"readWriteAnyDatabase", db: "admin"}
    ]}

role:表示角色,db:表示当前角色针对哪个数据库有效。比如设置了admin 那么这个用户的权限范围只在admin数据库有效。
比如我设置 role:"readWrite", db:"admin" 那么这个用户只能在admin这个数据库有读写的权限。

但是MongoDB中提供了几个全局数据库的角色,例如上面的

userAdminAnyDatabase, readWriteAnyDatabase

注意后面的AndDataBase, 如果设置了这个角色,那么意味着这个角色是针对所有数据库有效的,尽管它设置了db:"admin"。

设置完毕系统管理员用户后,我们就可以开启MongoDB中的授权认证模式了,开启模式后在此进入MongoDB的客户端:

[root@iZ25ce2pyrlZ ~]# ./mongod
MongoDB shell version: 3.0.6
connecting to: test
>

第一步切换到admin数据库:

use admin
switched to db admin

第二步进行身份认证:

db.auth("admin","123456")

认证成功返回1,如果认证失败会提升相关的错误信息。

我们可以查看一下系统用户:

db.system.users.find()

在这里你会看到一条记录。

然后我们可以给具体的数据里设置授权用户了。

首先切换对应的数据库:

use my_db

然后创建用户:

db.createUser({
    "user" : "my_db_admin",
    "pwd": "my_db_pwd",
    "roles" : [ 
        {role: "readWrite", db: "my_db" }
     ]},
    { w: "majority" , wtimeout: 5000 } 
)

这样我们就给my_db数据库创建了一个账户名:my_db_admin的读写的权限账号啦。

然后我们就可以用刚刚这个账号连接他啦。

MongoClientURI connectionString = new MongoClientURI("mongodb://账号名:密码@你的IP/?authSource=数据库&authMechanism=SCRAM-SHA-1");
MongoClient mongoClient = new MongoClient(connectionString);

大功告成!

BASE ON NUXT + NODE + MONGODB BY OUYANG90