web-dev-qa-db-fra.com

L'authentification MongoDB-CR a échoué

Je reçois une erreur suivante lors de l'authentification de l'utilisateur: achat_utilisateur @ achat a échoué. L'authentification MongoDB-CR a échoué. Informations d'identification manquantes dans le document utilisateur lorsque j'accède au service Web via un navigateur.

Mais je suis en mesure d'authentifier Purchase_user de Mongo, il retourne 1.

45
ashwini

allez sur la console mongoDB et supprimez votre utilisateur actuel et définissez la version de authSchema sur 3 au lieu de 5, suivez ces commandes dans la console 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 })

Maintenant, redémarrez le mongod et créez un nouvel utilisateur, alors cela devrait fonctionner correctement.

Remarque: utilisez les commandes remove dans test db uniquement, si en production, utilisez update.

83
Vivek

Avait le même problème. Ce qui m'arrivait à moi, c'est que lorsque j'ai utilisé MongoDB 3 pour créer mon utilisateur, il utilisait SCRAM-SHA-1 comme mécanisme d'authentification au lieu de MongoDB-CR. Ce que je devais faire était:

  1. Élément de liste
  2. Supprimer l'utilisateur créé.
  3. Modifiez la collection admin.system.version de telle sorte que currentVersion de authSchema soit 3 au lieu de 5 (3 utilise MongoDB-CR).
  4. Recréez votre utilisateur.

Devrait fonctionner sans problèmes maintenant.

19
Winston Lee

L'étape numéro 2. ci-dessus n'est pas explicite, j'ai trouvé cette solution et travaillé pour moi.

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

Je pense que c'est la réponse dont vous avez besoin:

1) Démarrez 3.0 sans l’autorisation activée. (L'authentification doit être désactivée sinon vous obtiendrez l'erreur non autorisée).

2) Exécuter (après avoir sélectionné "admin", utilisez db):

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

schema.currentVersion = 3

db.system.version.save (schéma)

3) redémarrez mongodb avec l’autorisation activée.

4) Créez un nouvel utilisateur administrateur (l'ancien, celui que vous avez créé avant cette solution de contournement ne fonctionnera pas).

Les choses devraient fonctionner maintenant. Cette question me rendait fou aussi. 

La réponse est venue d'ici: https://jira.mongodb.org/browse/SERVER-17459

10
Ahmed Haque

Ajout à la solution ci-dessus de Vivek & explication prise à partir d’ici

use admin
db.system.users.remove({})    <== removing all users
db.system.version.remove({}) <== removing current version 
db.system.version.insert({ "_id" : "authSchema", "currentVersion" : 3 })
  • il vous suffit de rétrograder le schéma pour créer des utilisateurs MONGODB-CR . Une fois qu’ils sont là, les anciens pilotes fonctionneront quelle que soit la valeur Toutefois, si vous exécutez authSchemaUpgrade pour modifier De "3" à "5", les utilisateurs seront évidemment mis à niveau.
  • Mon commentaire concernant les nouveaux utilisateurs était que si vous avez des utilisateurs existants de SCRAM Et modifiez manuellement le schéma en "3", les documents utilisateur ne seront pas Cohérents avec le nouveau schéma. Ceci n’est toutefois pas appliqué, mais les utilisateurs de la SCRAM continueront de fonctionner pour tous les pilotes prenant en charge la SCRAM.
8
Zubair Alam

Mettez à jour le pilote mongo-Java vers la version 3.0.3 et utilisez: -

MongoCredential.createScramSha1Credential au lieu de MongoCredential.createMongoCRCredential

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

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

3
sonal kumar sinha

Pour moi, j'utilisais un client mongo 2 en essayant de se connecter à un serveur mongo 3 La mise à niveau du client a résolu le problème.

1
Derrick Petzold

J'avais aussi cette erreur.

Vérifiez votre fichier Spring Config. J'avais un constructeur appelé "MONGODB-CR" que j'ai remplacé par "SCRAM-SHA-1" et il a résolu mon problème.

suivre le fichier journal mongodb m'a aidé à diagnostiquer cela.

0
technocrat
  • désinstaller les paquets mongodb-clients fournis par Ubuntu 
  • installer mongodb-org-Shell fourni par officiel MongoDB

Cela a résolu le problème, car le paquet non officiel mongodb fourni par Ubuntu n’est pas maintenu par MongoDB. Vous devez toujours utiliser les packages officiels MongoDB mongodb-org, qui sont mis à jour avec les dernières versions majeures et mineures de MongoDB.

0

Probablement vieilles nouvelles, et problème résolu, mais en ajoutant mon expérience avec la même erreur:

J'ai eu exactement le même problème (avec MongoDB 3.0) et un pilote C # configuré pour utiliser une base de données antérieure à la version 3.0.

En C #, j'ai utilisé "MongoDB.Driver.CreateMongoCRCredentials ()", qui a provoqué l'erreur que l'OP obtenait.

Le correctif (pour moi), était de basculer la commande ci-dessus sur "MongoDB.Driver.CreateCredential ()".

Je suppose que cela pourrait être causé par l'utilisation "d'anciens" utilisateurs (à partir de la version 3.0) sur un système mis à niveau. Cela vous oblige soit à mettre à niveau vos utilisateurs vers le nouveau mécanisme d'authentification, soit à rétrograder le mécanisme d'authentification sur votre serveur.

0
TylerD75

Juin 2018 J'ai eu cette erreur après avoir essayé de me connecter à Mongodb version 3.6 à partir d'un ancien client installé dans/usr/bin. J'ai installé la base de données mongo dans un dossier distinct situé en dehors du répertoire standard du système d'exploitation. Mon installation était donc en conflit avec l'ancienne version installée par le gestionnaire de packages. 

0
Brad Hein