如何在MongoDB中重命名用户?

7

数据库中有一个用户,需要将其更名。如何更改用户名?MongoDB用户管理参考文档中有一个方法db.updateUser,但我不知道如何设置新用户名。 怎样更新用户名? 谢谢。

db.updateUser(
   "<username>",
   {
     customData : { <any information> },
     roles : [
               { role: "<role>", db: "<database>" } | "<role>",
               ...
             ],
     pwd: "<cleartext password>"
    },
    writeConcern: { <write concern> }
)
1个回答

12

你尝试更新用户了吗?

db.system.users.update({"user":"oldname"}, {$set:{"user":"newname"}})

此命令需要root访问管理员数据库。


这种方法还没有尝试过。你的方法常见吗?那么为什么会支持db.updateUser()呢?不管怎样,感谢你提供的解决方案 :)。 - Developer Marius Žilėnas
从我的记忆中,updateUser 函数会加密明文密码,并且不需要访问 system.users 数据库。 - Alex Blex
6
顺便说一下,命令 db.system.users.update({"user":"oldname"}, {$set:{"user":"newname"}}) 对于具有以下角色的用户 (roles : [ { role : "userAdminAnyDatabase", db : "admin" } ]) 产生了错误 ("errmsg" : "not authorized on admin to execute command { update:)。必须使用具有以下角色的用户(roles : [ { role : "root", db : "admin" } ])进行身份验证,才能成功发出 db.system.users.update(...) 命令。 - Developer Marius Žilėnas
已更新答案。谢谢。 - Alex Blex
@Willmore Alex是正确的,updateUser是许多shell便捷方法之一,当发出db.updateUser时可以看到(请注意括号的缺失)。我想补充说明的是,您不一定需要成为root用户。任何具有身份验证数据库(在本例中为admin)中的userAdminuserAdminAnyDatabase角色的用户都可以执行此操作。对于后者要小心,拥有此角色的用户可以向自己或其他人授予任何特权。 - Markus W Mahlberg
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接