mongod 3.4.3 用户权限授权

最近在玩koa2,涉及到连接mongodb,中间踩的坑挺多,mongodb默认是没有用户验证登录的,但是为了让我们的数据库更加安全,还是要把用户权限这一块加上滴。废话不多说,现在开启我们的验证之旅:
我的mongodb是通过brew install mongod安装的,所以按默认配置启动服务mongod --config /usr/local/etc/mongod.conf,此命令不是挂起的,所以我们另开窗口执行mongo,连接到admin库,在admin库添加超级用户:

Eugene-mac:~ Eugene$ mongo
MongoDB shell version v3.4.3
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.3
Server has startup warnings:
2017-04-27T17:19:15.356+0800 I CONTROL  [initandlisten]
2017-04-27T17:19:15.356+0800 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2017-04-27T17:19:15.356+0800 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2017-04-27T17:19:15.356+0800 I CONTROL  [initandlisten]
> show dbs
admin  0.000GB
local  0.000GB
test   0.000GB
> use admin
switched to db admin
> db.createUser({
     user: 'admin',
     pwd: 'admin',
     roles: [ { role: "__system", db: "admin" } ]
  })
Successfully added user: {
    "user" : "admin",
    "roles" : [
        {
            "role" : "__system",
            "db" : "admin"
        }
    ]
}
>

这样,超级用户就建成了,通过这个用户可以对任何库进行任何超做。但是利用这个超级用户来连接数据库显然是不安全的,所以我们可以对每个库进行权限配置。接下来就来配置其他库的用户权限,比如现在有一个test测试库,我配置一个读写权限的用户:

> use admin
switched to db admin
> db.createUser({
     user: 'testUser', 
     pwd: 'testPwd', 
     roles: [ { role: 'readWrite', db: 'test'} ]
  })
Successfully added user: {
    "user" : "testUser",
    "roles" : [
        {
            "role" : "readWrite",
            "db" : "test"
        }
    ]
}

这样,这个用户名为testUser密码为testPwd的用户就建成了,如果我们用工具mongoose直连mongodb的话也是很方便的。

mongoose.connect('mongodb://testUser:testPwd@localhost:27017/test', {
  auth: {
        authdb: 'admin'
    }
}, function(err){
  if (err) {
        console.error(err);
    } else {
        cosnole.log('连接数据库成功')  
    }
});

以上是连接test库的方式,如果要使用之前建的超级用户来访问test库的话,只要修改url中的账号和密码就行啦。(注意一定要访问的时候要对admin库验证,即authdb: 'admin')。

你可能感兴趣的:(mongod 3.4.3 用户权限授权)