MONGODB-CR: AuthenticationFailed UserNotFound Could not find user...报错解决方法

在应用使用账号密码登录认证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"}) 

> schema.currentVersion = 3

> db.system.version.save(schema)

 

3、重新创建用户,即为校验方式为MONGODB-CR的用户。

 

4、创建完校验方式为MONGODB-CR的用户,可根据自己的需求将数据库的校验方式改为原来的认证方式。

 

5.查看当前MongoDB所有用户的认证方式:
use admin
db.system.users.find()

 

6.MongoDB3.6版本后会弃用MONGODB-CR认证方式!!!

 

你可能感兴趣的:(MongoDB,一些报错)