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')。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容