MongoDB“userAdminAnyDatabase”用户无法管理“任何数据库”中的用户,为什么?

5jdjgkvh  于 2023-11-17  发布在  Go
关注(0)|答案(3)|浏览(134)

这是一个userAdminuserAdminAnyDatabase的问题。
system.users中,我有以下用户(密码为1234):

> db.system.users.find()
{ "_id" : ObjectId("52a976cb7851682aa44d6d4d"), "user" : "admin_one", "pwd" : "884f516cf308a4c6a75bbc5a0a00807b", "roles" : [  "userAdmin",  "dbAdmin" ] }
{ "_id" : ObjectId("52a97c697851682aa44d6d4f"), "user" : "admin_two", "pwd" : "26e7bb644e5919461cd6ba7403dc6906", "roles" : [  "userAdminAnyDatabase",  "dbAdminAnyDatabase" ] }

字符串
连接错误的用户:

$ mongo mono -u admin -p 1234
connecting to: mono
Thu Dec 12 10:09:00.733 Error: 18 { code: 18, ok: 0.0, errmsg: "auth fails" } at src/mongo/shell/db.js:228


这没什么
连接到db admin:

$ mongo mono -u admin_one -p 1234
connecting to: mono
> db.system.users.find()
{ "_id" : ObjectId("52a976cb7851682aa44d6d4d"), "user" : "admin_one", "pwd" : "884f516cf308a4c6a75bbc5a0a00807b", "roles" : [  "userAdmin",  "dbAdmin" ] }
{ "_id" : ObjectId("52a97c697851682aa44d6d4f"), "user" : "admin_two", "pwd" : "26e7bb644e5919461cd6ba7403dc6906", "roles" : [  "userAdminAnyDatabase",  "dbAdminAnyDatabase" ] }


这也没关系
现在,连接“AnyDatabase”管理员时,我得到一个错误:

$ mongo mono -u admin_two -p 1234
connecting to: mono
> db.system.users.find()
error: { "$err" : "not authorized for query on mono.system.users", "code" : 16550 }


为什么?为什么?

zpgglvta

zpgglvta1#

您似乎试图在mono数据库上分配userAdminAnyDatabase角色,而不是在admin数据库上。anyDatabase角色仅适用于通过admin数据库身份验证的用户。
有关详细信息,请参阅anyDatabase角色的文档。

plicqrtu

plicqrtu2#

在mongodb中创建admin用户后,我遇到了类似的问题。
您可能需要检查:

  1. admin用户必须位于系统的admin数据库中
    1.检查管理员用户的角色,允许您“查看”所有数据库的角色将是“clusterAdmin”。我将检查角色,并添加amdin角色所需的角色。
    这可能有助于
    用户角色说明:http://docs.mongodb.org/manual/reference/method/db.grantRolesToUser/#db.grantRolesToUser
    userAdminAnyDatabase和userAdmin不会明确授与使用者使用者管理以外的任何权限。您也必须为list databases命令新增“clusterAdmin”角色:http://docs.mongodb.org/manual/reference/user-privileges/#clusterAdmin如果您要使用者读取/写入数据库和集合,则必须新增另一个角色,即“readWrite”
    此外,您可能希望检查您的mongod终端,看看有什么错误弹出在后面。
    祝你好运,
cbeh67ev

cbeh67ev3#

在mongosh上,您可以将clusterAdmin角色授予username

use admin
db.grantRolesToUser( "username", [ { role: "clusterAdmin", db: "admin" } ] )

字符串

相关问题