gpt4 book ai didi

mongodb - dbowner "not authorized"更新用户?

转载 作者:可可西里 更新时间:2023-11-01 09:17:06 27 4
gpt4 key购买 nike

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

所以我尝试使用管理员用户执行以下命令(它具有 dbOwner 和 userAdmin 权限,并直接在 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

我可以为用户更新自定义数据,但不能更新角色...

谁能告诉我我的管理员用户需要哪种权限或角色才能执行此更新?

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

托比亚斯

最佳答案

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

Required Access

You must have access that includes the revokeRole action on all databases in order to update a user’s roles array.

You must have the grantRole action on a role’s database to add a role to a user.

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

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

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

Required Access

You must have the grantRole action on a database to grant a role on that database.

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

关于mongodb - dbowner "not authorized"更新用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24597901/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com