这是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
没关系。
与数据库管理员连接:
$ 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 }
为什么?
答案 0 :(得分:9)
您似乎正在尝试在userAdminAnyDatabase
数据库上分配mono
角色,而不是{{admin}}数据库。 “anyDatabase”角色仅适用于对admin
数据库进行身份验证的用户。
有关详细信息,请参阅the documentation of the anyDatabase Roles。
答案 1 :(得分:5)
在mongodb中创建管理员用户后,我遇到了类似的问题。
您可能需要查看:
此 可能有帮助
用户角色说明: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终端,以查看后面弹出的错误。
祝你好运,