帐号管理


  • 註冊用戶

    1. 前言

    • 在之前文章“安全认证”中已经介绍了如何在 MongoDB 中开启安全认证,帐号的创建,系统角色权限的具体范围等。在这篇文章中我们将重点对帐号的管理方面做一些介绍。

    2. 帐号查询

    • MongoDB 查询帐号信息有两种方式: 1.进入admin 数据库使用 system.users.find() 2.在帐号所在数据库下使用 getUser("username") 或者getUsers()
    <code>#切换到 admin 数据库
    > use admin
    switched to db admin
    #使用 system.users.find()方法
    > db.system.users.find()
    { "_id" : "admin.admin", "user" : "admin", "db" : "admin",
     "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "+IgnYVH/lh8ei7MFiazx3A==",
     "storedKey" : "91QJOByldQaPEARRTMOECea67kg=", "serverKey" : "Hl+EZjqjWOI7p7TMlyQcChcI9p4=" } }, 
    "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ]}
    { "_id" : "bitest.biadmin", "user" : "biadmin", "db" : "bitest",
     "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "JZkM9swkwj4DaegSLpMkRQ==",
     "storedKey" : "zrDh9OH3rQ1VqDIZneFn7O4MCls=", "serverKey" : "d68w1NDpri8X2fW6itacxQLfKRs=" } }, 
    "roles" : [ { "role" : "dbAdmin", "db" : "bitest" } ] }
    #切换到bitest数据库
    > use bitest
    switched to db bitest
    #使用getUser("username") 方法
    > db.getUser("biadmin")
    [
            {
                    "_id" : "bitest.biadmin",
                    "user" : "biadmin",
                    "db" : "bitest",
                    "roles" : [
                            {
                                    "role" : "dbAdmin",
                                    "db" : "bitest"
                            }
                    ]
            }
    ]
    </code>

    3. 修改帐号信息

    • MongoDB 帐号信息需要使用 updateUser 函数,包含 _id、user、db、customData、roles、pwd等参数。
    <code>//使用updateUser函数customData参数向帐号添加密码明文信息
    > db.updateUser(
     "biadmin",
      {customData:{"PassWord":"biadmin"}})
    //查询添加结果
    > db.getUsers()
    [
            {
                    "_id" : "bitest.biadmin",
                    "user" : "biadmin",
                    "db" : "bitest",
                    "roles" : [
                            {
                                    "role" : "dbAdmin",
                                    "db" : "bitest"
                            }
                    ],
                    "customData" : {
                            "PassWord" : "biadmin"
                    }
            }
    ]
    </code>

    4. 修改密码

    • MongoDB 修改帐号的密码有两种方式: 1.使用 changeUserPassword 方法 2.使用 updateUser 方法里面的 pwd 参数
    <code>//验证帐号密码
    > db.auth("biadmin","biadmin")
    1
    //修改帐号密码
    > db.changeUserPassword("biadmin","123")
    //使用原密码验证失败返回0
    > db.auth("biadmin","biadmin")
    Error: Authentication failed.
    0
    //使用修改后密码验证成功返回1
    > db.auth("biadmin","123")
    1
    //使用updateUser 修改密码
    > db.updateUser(
     "biadmin",
      {pwd:"biadmin"})
    //验证密码成功返回1
    > db.auth("biadmin","biadmin")
    1
    </code>

    5. 删除帐号

    • MongoDB 删除帐号有两种方式: 1.使用 dropUser("username") 删除当前数据库下指定帐号 2.使用 dropAllUsers() 删除数据库下所有帐号
    <code>//已经创建两个测试帐号
    > db.getUser("test1")
    {
            "_id" : "bitest.test1",
            "user" : "test1",
            "db" : "bitest",
            "roles" : [
                    {
                            "role" : "dbAdmin",
                            "db" : "bitest"
                    }
            ]
    }
    > db.getUser("test2")
    {
            "_id" : "bitest.test2",
            "user" : "test2",
            "db" : "bitest",
            "roles" : [
                    {
                            "role" : "dbAdmin",
                            "db" : "bitest"
                    }
            ]
    }
    //使用dropUser删除帐号test1成功返回true
    > db.dropUser("test1")
    true
    //查询帐号test1已不存在
    > db.getUser("test1")
    null
    //使用dropAllUsers删除所有帐号
    > db.dropAllUsers()
    2
    //查询帐号 test2,biadmin 都已不存在
    > db.getUser("test2")
    null
    > db.getUser("biadmin")
    null
    //查询数据库下所有帐号返回空数组
    > db.getUsers()
    [ ]
    </code>

登录后回复
 

与 萌阔论坛 的连接断开,我们正在尝试重连,请耐心等待