MongoDB AuthenticationFailed,机制为MONGODB-CR

时间:2015-05-01 08:36:52

标签: mongodb

我已经在我的管理数据库中创建了这两个用户:

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

我该如何解决?

2 个答案:

答案 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服务器和客户端之间使用未匹配版本时,这种情况发生在我身上 例如:

  • 服务器:mongod的版本是v3.4.2。
  • 客户端:mongo的版本是2.6.10。

当我使用有效的用户和密码通过mongo访问服务器时,由于版本未匹配而失败。