112 votes

Impossible de s'authentifier dans Mongo, "auth fails".

J'ai créé un utilisateur administrateur pour mongo en suivant ces instructions :

http://docs.mongodb.org/manual/tutorial/add-user-administrator/

Depuis le client mongo, il semble que je puisse m'authentifier :

> use admin
switched to db admin
> db.auth('admin','SECRETPASSWORD');
1
>

Mais je ne peux pas me connecter d'une autre manière. Par exemple :

mongo -u admin -p SECRETPASSWORD

donne l'erreur :

JavaScript execution failed: Error: 18 { code: 18, ok: 0.0, errmsg: "auth fails" } at src/mongo/shell/db.js:L228

J'ai auth = true en etc/mongod.conf .

Qu'est-ce que je rate ?

130voto

gilo Points 1269

L'authentification est gérée au niveau de la base de données. Lorsque vous essayez de vous connecter au système à l'aide d'une base de données, mongo vérifie en fait les informations d'identification que vous fournissez dans la collection <database>.system.users . Donc, en gros, lorsque vous essayez de vous connecter à "test", il cherche les informations d'identification dans test.system.users et renvoie une erreur parce qu'il ne peut pas les trouver (puisqu'ils sont stockés dans le fichier admin.system.users ). Avoir le droit de lire et d'écrire à partir de tous les db ne signifie pas que vous pouvez vous y connecter directement.

Vous devez d'abord vous connecter à la base de données contenant les informations d'identification. Essayez :

mongo admin -u admin -p SECRETPASSWORD

Pour plus d'informations, consultez ce site http://docs.mongodb.org/manual/reference/privilege-documents/

95voto

Chad E. Points 1046

J'ai également reçu cette erreur, ce dont j'avais besoin était de spécifier la base de données où les données d'authentification des utilisateurs étaient stockées :

mongo -u admin -p SECRETPASSWORD --authenticationDatabase admin

Mise à jour du 18 novembre 2017 :

mongo admin -u admin -p

est une meilleure solution. Mongo vous demandera votre mot de passe, de cette façon vous ne mettrez pas votre mot de passe en clair dans l'historique du shell, ce qui est une pratique de sécurité terrible.

41voto

lmyers Points 2644

Vous devrez peut-être mettre à jour votre shell mongo. J'avais la version 2.4.9 du shell mongo en local, et j'ai eu cette erreur en essayant de me connecter à une base de données mongo 3. La mise à jour de la version 3 du shell a résolu le problème.

35voto

user3609666 Points 351

Je sais que cela peut sembler évident, mais j'ai également dû utiliser un guillemet simple autour de u/n et p/w avant que cela ne fonctionne.

mongo admin -u 'user' -p 'password' (mot de passe)

22voto

Lee Parayno Points 406

Dans MongoDB 3.0, il prend désormais en charge plusieurs mécanismes d'authentification.

  1. Défi et réponse MongoDB (SCRAM-SHA-1) - par défaut dans 3.0
  2. Défi et réponse MongoDB (MONGODB-CR) - défaut précédent (< 3.0)

Si vous avez commencé avec une nouvelle base de données 3.0 avec de nouveaux utilisateurs créés, ils auraient été créés en utilisant SCRAM-SHA-1.

Vous aurez donc besoin d'un pilote capable d'assurer cette authentification :

http://docs.mongodb.org/manual/release-notes/3.0-scram/#considerations-scram-sha-1-drivers

Si vous aviez une base de données mise à jour à partir de la version 2.x avec des données utilisateur existantes, elles utiliseraient toujours MONGODB-CR, et la base de données d'authentification des utilisateurs devrait être mise à jour :

http://docs.mongodb.org/manual/release-notes/3.0-scram/#upgrade-mongodb-cr-to-scram

Maintenant, la connexion à MongoDB 3.0 avec des utilisateurs créés avec SCRAM-SHA-1 sont tenus de spécifier la base de données d'authentification (via le client mongo en ligne de commande), et en utilisant d'autres mécanismes si vous utilisez un pilote.

$> mongo -u USER -p PASSWORD --authenticationDatabase admin

Dans ce cas, la base de données "admin", qui est aussi celle par défaut, sera utilisée pour s'authentifier.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X