如何在MongoDB 2.4中向现有用户添加角色

时间:2015-12-05 02:14:49

标签: mongodb

我花了一个小时的时间试图挖掘MongoDB的在线文档,当用户管理命令不断变化时,这对2.4版本来说非常粗制滥造。

我已经在mongoDB 2.4.11中找到了它。

db.addUser( { user: "...", pwd: "...", roles: [ ... ] } ) 

的工作原理。但我找不到任何更新用户角色的命令示例,当我尝试覆盖现有用户时收到此错误消息:

 User already exists with that username/userSource combination at src/mongo/shell/db.js:125

所以我被卡住了。

(作为奖励,如何从2.4中删除现有用户的角色?)

当我尝试

db.grantRolesToUser( "myself", [  {role: "clusterAdmin"} ] )

如v2.6中所述,我得到:

TypeError: Property 'grantRolesToUser' of object admin is not a function

所以在2.4不工作。

2 个答案:

答案 0 :(得分:1)

我在mongodb网站上看到了一份清晰的文档:

仅限v2.6: 要向用户授予其他角色,请按照此处给出的步骤操作:https://docs.mongodb.org/v2.6/tutorial/assign-role-to-user/

要撤消用户的角色,请按以下步骤操作:https://docs.mongodb.org/v2.6/tutorial/change-user-privileges/

对于v2.4,请尝试使用其他帖子:https://stackoverflow.com/a/23125827/1505987

答案 1 :(得分:1)

2021 年更新

MongoDB 版本:4.4.2

您可以使用 db.grantRolesToUser()

向现有用户添加角色

官方语法:db.grantRolesToUser( "<username>", [ <roles> ], { <writeConcern> } )

使用以下命令,您可以授予对除localconfig

以外的所有数据库的读写访问权限
> use admin;
> db.grantRolesToUser('user1', ['readWriteAnyDatabase']);

但是,如果您只想授予特定数据库(例如帐户数据库)的读写权限,则可以按如下操作

use admin;
db.grantRolesToUser('user1', [{ role: 'readWrite', db: 'account' }]);

MongoDB 参考:https://docs.mongodb.com/manual/reference/method/db.grantRolesToUser/