这是一个userAdmin
与userAdminAnyDatabase
的问题。
在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 }
型
为什么?为什么?
3条答案
按热度按时间zpgglvta1#
您似乎试图在
mono
数据库上分配userAdminAnyDatabase
角色,而不是在admin
数据库上。anyDatabase
角色仅适用于通过admin
数据库身份验证的用户。有关详细信息,请参阅
anyDatabase
角色的文档。plicqrtu2#
在mongodb中创建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终端,看看有什么错误弹出在后面。
祝你好运,
cbeh67ev3#
在mongosh上,您可以将
clusterAdmin
角色授予username
字符串