在应用使用账号密码登录认证MongoDB时,观察MongoDB日志会出现下面报错:
2018-08-16T14:46:38.242+0800 [conn16484] Failed to authenticate testbj2@search with mechanism MONGODB-CR: AuthenticationFailed UserNotFound Could not find user testbj2@search
报错原因:
可以看出应用使用旧版本驱动来登录验证MongoDB的。旧版本的驱动携带的校验方式是MONGODB-CR,但在3.0.3版本后,MongoDB加入了SCRAM-SHA-1校验方式,并为默认的校验方式。
当创建用户的时候,系统将新用户的校验方式绑定为当前系统的校验方式。(若当前系统的校验方式为SCRAM-SHA-1,那新用户的校验方式会是SCRAM-SHA-1,并且不能修改),解决问题的方法就是创建一个检验方式为MONGODB-CR的用户。
创建一个检验方式为MONGODB-CR的用户方法:
SCRAM-SHA-1校验方式 的代号为5
MONGODB-CR校验方式 的代号为3
1、查看当前系统认证方式
>use admin
>db.system.version.findOne({"_id" : "authSchema"})
2、修改系统校验方式(不会影响原有用户的校验方式,只有对新用户有影响)
> var schema = db.system.version.findOne({"_id" : "authSchema"})
> sch