我正在尝试更新用户的角色。
所以我尝试使用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角色授予的权限。)
托拜厄斯
答案 0 :(得分:0)
我认为问题在于updateUser需要所有数据库的附加权限。来自文档:
必读访问
您必须具有包含所有revokeRole操作的访问权限 数据库,以便更新用户的角色数组。
您必须对角色的数据库执行grantRole操作才能添加角色 给用户。
请注意所有数据库上的revokeRole要求,而不仅仅是涉及的数据库。
我尝试使用db.grantRolesToUsers()命令,因为它不需要相同级别的权限。
http://docs.mongodb.org/manual/reference/method/db.grantRolesToUser/
必读访问
您必须对数据库执行grantRole操作才能授予角色 那个数据库。
或者,您可以确保运行updateUser命令的用户在所有数据库上都具有revokeRole。