最近在项目中有使用到MongoDB,但是项目连接MongoDB会一直报{ "ok" : 0.0, "errmsg" : "Authentication failed.", "code" : 18, "codeName" : "AuthenticationFailed" }的问题。

错误内容以及原因

1
2
3
4
5
6
{
"ok": 0,
"errmsg": "Authentication failed.",
"code": 18,
"codeName": "AuthenticationFailed"
}

出现这种错误的原因是因为在MongoDB最新版本中,使用的是SCRAM-SHA-1对应的验证机制,我们在使用用户密码来连接对应的库的时候会反馈给你如上的错误。

解决方案

如果要解决以上问题,我们需要替换掉这个验证机制。
进行以下操作即可:

1
2
3
4
5
root@container:/# mongo  
root@container:/# use admin
root@container:/# var schema = db.system.version.findOne({"_id" : "authSchema"})
root@container:/# schema.currentVersion = 3
root@container:/# db.system.version.save(schema)