MongoDB-CR身份validation失败

在validation用户时出现以下错误:purchase_user @ purchase failed。 MongoDB-CR身份validation失败。 当我通过浏览器访问web服务时,缺less用户文档中的凭据。

但是我能够从mongoauthenticationpurchase_user它返回1。

去mongoDB控制台,并删除您的当前用户和设置authSchema版本为3而不是5,请按照mongo控制台中的这些命令 –

mongo use admin db.system.users.remove({}) <== removing all users db.system.version.remove({}) <== removing current version db.system.version.insert({ "_id" : "authSchema", "currentVersion" : 3 }) 

现在重新启动mongod并创build新的用户,那么它应该工作正常。

注意:只能在test db中使用remove命令,如果在生产中使用update的话。

有同样的问题。 发生在我身上的是,当我使用MongoDB 3来创build我的用户时,它使用SCRAM-SHA-1作为它的authentication机制而不是MongoDB-CR。 我所要做的是:

  1. 列表项目
  2. 删除创build的用户。
  3. 修改集合admin.system.version,使得authSchema的currentVersion是3而不是5(3正在使用MongoDB-CR)。
  4. 重新创build您的用户。

现在应该没有问题的工作。

上面的步骤2没有详细说明,我find了这个解决scheme并为我工作。

 var schema = db.system.version.findOne({"_id" : "authSchema"}) schema.currentVersion = 3 db.system.version.save(schema) 

我认为这是你需要的答案:

1)启动3.0没有auth启用。 (Auth需要被禁用,否则你会得到未经授权的错误)。

2)运行(select“admin”后使用db):

var schema = db.system.version.findOne({“_ id”:“authSchema”})

schema.currentVersion = 3

db.system.version.save(架构)

3)启用auth重启mongodb。

4)创build一个新的pipe理员用户(旧的,这个解决方法之前创build的用户不会工作)。

事情现在应该工作。 这个问题也让我疯狂。

来自这里的答案是: https : //jira.mongodb.org/browse/SERVER-17459

通过Vivek添加上述解决scheme并从这里获取解释

 use admin db.system.users.remove({}) <== removing all users db.system.version.remove({}) <== removing current version db.system.version.insert({ "_id" : "authSchema", "currentVersion" : 3 }) 
  • 您只需降级架构即可创buildMONGODB-CR用户。 一旦他们在那里,旧的驱动程序将工作,无论authSchemaVersion的价值。 但是,如果运行authSchemaUpgrade从“3”更改为“5”,用户显然会升级。
  • 我对新用户的评论是,如果你有现有的SCRAM用户,并手动改变模式为“3”,用户文件将不符合新的模式。 但是这并不是强制执行的,但是SCRAM用户仍然可以为任何支持SCRAM的驱动程序工作。

将mongo-java-driver升级到3.0.3并使用: –

MongoCredential.createScramSha1Credential而不是MongoCredential.createMongoCRCredential

MongoCredential createMongoCRCredential = MongoCredential.createScramSha1Credential(mongoConfiguration.getDatabaseUserName(),mongoConfiguration.getAuthenticationDatabase(),mongoConfiguration.getDatabasePassword()。toCharArray());

http://docs.mongodb.org/master/release-notes/3.0-scram/

我也得到这个错误。

检查你的Springconfiguration文件..我有一个名为“MONGODB-CR”,我交换到“SCRAM-SHA-1”的构造函数arg,它解决了我的问题。

拖曳mongodb日志文件帮助我诊断这个。

可能是旧的消息,问题解决了,但加上我的经验,同样的错误:

我有完全相同的问题(使用MongoDB 3.0),和一个C#驱动程序设置使用前3.0分贝。

在C#中,我使用了“MongoDB.Driver.CreateMongoCRCredentials()”,这导致了OP得到的错误。

修复(对我来说)是将上面的命令切换到“MongoDB.Driver.CreateCredential()”。

我想这可能是由于在升级的系统上使用“旧”用户(从3.0之前的版本)引起的。 这迫使您将用户升级到新的身份validation机制,或者降级服务器上的身份validation机制。

对我来说,我正在使用一个mongo 2客户端试图连接到一个mongo 3服务器。 升级客户端解决了这个问题。