我已经在我的管理数据库中创建了这两个用户:
db.auth('admin','password')
1
> db.getUsers()
[
{
"_id" : "admin.siteUserAdmin",
"user" : "siteUserAdmin",
"db" : "admin",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
},
{
"_id" : "admin.admin",
"user" : "admin",
"db" : "admin",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}
]
我从本地主机正确地验证了我,但是当我尝试使用外部客户端连接到我的数据库时,我收到了这个错误:
Failed to authenticate admin@admin with mechanism MONGODB-CR: AuthenticationFailed MONGODB-CR credentials missing in the user document
我该如何解决?
答案 0 :(得分:8)
如上所述here:MongoDB 3身份验证机制已从 MongoDB质询和响应 (MONGODB-CR)更改为质询和响应机制 (SCRAM-SHA-1)。
您必须删除创建的用户,然后将 admin.system.version.authSchema 更改为 3 而不是 5 。然后重新创建用户应解决问题:
var schema = db.system.version.findOne({"_id" : "authSchema"})
schema.currentVersion = 3
db.system.version.save(schema)
This链接也可能有用。
答案 1 :(得分:5)
我的症状与上述问题不同,但我在此写下以供参考 我在本地环境中收到验证错误 当我在mongodb服务器和客户端之间使用未匹配版本时,这种情况发生在我身上 例如:
当我使用有效的用户和密码通过mongo访问服务器时,由于版本未匹配而失败。