帐号管理
-
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>