db_owner"未授权#34;更新用户?

时间:2014-07-06 16:23:19

标签: mongodb

我正在尝试更新用户的角色。

所以我尝试使用admin-user(具有dbOwner和userAdmin priv。并且直接在UnitTestDb上创建)的以下命令

db.runCommand({ "updateUser" : "unittestuser1", "roles" : [{ "role" : "Testentity_readwrite", "db" : "UnitTestDb" }, { "role" : "Testentity_read", "db" : "UnitTestDb" }] }

我直接在“UnitTestDb”上运行此命令,并且“Testentity_read”角色也直接在此数据库中创建。

我收到以下错误:

{
    "ok" : 0,
    "errmsg" : "not authorized on UnitTestDb to execute command { updateUser: \"unittestuser1\", roles: [ { role: \"Testentity_readwrite\", db: \"UnitTestDb\" }, { role: \"Testentity_read\", db: \

“UnitTestDb \”}]}“,         “代码”:13 }

我能够为用户更新customData而不是角色......

有人可以告诉我管理员用户执行此更新所需的权限或角色吗?

dbOwner应该具有对其创建的数据库的完全访问权限(来自mongodb.org:数据库所有者可以对数据库执行任何管理操作。此角色结合了readWrite,dbAdmin和userAdmin角色授予的权限。)

托拜厄斯

1 个答案:

答案 0 :(得分:0)

我认为问题在于updateUser需要所有数据库的附加权限。来自文档:

  

必读访问

     

您必须具有包含所有revokeRole操作的访问权限   数据库,以便更新用户的角色数组。

     

您必须对角色的数据库执行grantRole操作才能添加角色   给用户。

请注意所有数据库上的revokeRole要求,而不仅仅是涉及的数据库。

我尝试使用db.grantRolesToUsers()命令,因为它不需要相同级别的权限。

http://docs.mongodb.org/manual/reference/method/db.grantRolesToUser/

  

必读访问

     

您必须对数据库执行grantRole操作才能授予角色   那个数据库。

或者,您可以确保运行updateUser命令的用户在所有数据库上都具有revokeRole。