美文网首页程序员
Mongodb账户管理

Mongodb账户管理

作者: 哈比猪 | 来源:发表于2016-08-19 14:57 被阅读0次

    介绍

    Mongodb是一个schema free的非sql类分布式数据库,可以利用它做很多很灵活的存储和操作,最近了解了下它的账户机制,通过设置auth启动方式可以对所有登陆用户做各种操作的限定。

    认证方式登陆mongodb

    sudo ./bin/mongod --auth -dbpath=/usr/local/mongodb/data/db --port 27017 -logpath=/usr/local/mongodb/log --logappend
    

    dbpath和logpath需要自己提前单独的创建好目录。
    -auth: 表示通过认证方式登陆mongodb

    不过在用auth方式启动mongodb服务器之前,需要创建一个可以管理所有用户的账户(一般在admin数据库中),如:

    use admin
    db.createUser(
       {
         user: "root",
         pwd: "root",
         roles: [{ role: "userAdminAnyDatabase", db: "admin" } ]
       }
    )
    

    创建了一个“root”账户,它的role(即权限范围)是“userAdminAnyDatabase”,即可以admin权限管理任意的数据库的用户。

    如果不使用“use admin”,那会在当前数据库创建user,不指定db的登陆会默认在test数据库中,createUser中的role指定了权限类型,roles中的“db”指定了作用域的数据库。

    设置以auth方式登陆之后,client端通过mongo登陆mongodb,是必须加上“--authenticationDatabase”选项的,“authenticationDatabase”指定了校验用户账户名和密码的数据库,例如:

    ./bin/mongo mytest -u "test" -p "123" --authenticationDatabase admin
    
    • 紧接着mongo命令后面的“mytest”指定了登陆之后所在的数据库,即成功登陆之后会直接跳转到该数据库,不写默认是test数据库。
    • --authenticationDatabase 指定的是验证用户名和密码的数据库,也就是说在哪个数据库创建的登陆用户,就写哪个数据库,如上例中,user=“test”和passwd=“123”是在admin db中创建的。
    • 如果目的既是登陆test数据库,而用户也是test数据库中创建,那么可以不用写后面的参数 --authenticationDatabase,如下也可以登陆:
    ./bin/mongo mytest -u "test" -p "123" 
    

    mongodb关闭

    不要kill -9 pid 方式关闭mongodb的进程,这样会有很多服务资源没法回收,应该使用

    kill -2 pid
    

    或者

    db.shutdownServer()
    

    相关文章

      网友评论

        本文标题:Mongodb账户管理

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