mongod 3.4.3 用户权限授权

作者: Eugeneeee | 来源:发表于2017-04-27 18:06 被阅读417次

    最近在玩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 用户权限授权

        本文链接:https://www.haomeiwen.com/subject/llknzttx.html