J'ai créé un utilisateur administrateur pour mongo en utilisant 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 autrement. Par exemple:
mongo -u admin -p MOT DE PASSE SECRET
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?
db.changeUserPassword("admin", "password")
pour changer le mot de passe de chaque base de données.Réponses:
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, fondamentalement, lorsque vous essayez de vous connecter à "test", il recherche les informations d'identificationtest.system.users
et renvoie une erreur car il ne les trouve pas (car elles sont stockées dansadmin.system.users
). Avoir le droit de lire et d'écrire à partir de toutes les bases de données 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. Essayer:
Pour plus d'informations, consultez ce http://docs.mongodb.org/manual/reference/privilege-documents/
la source
J'ai également reçu cette erreur, ce dont j'avais besoin était de spécifier la base de données dans laquelle les données d'authentification de l'utilisateur étaient stockées:
Mise à jour du 18 novembre 2017:
est une meilleure solution. Mongo vous demandera votre mot de passe, de cette façon vous ne mettrez pas votre mot de passe en texte clair dans l'historique du shell, ce qui est simplement une pratique de sécurité terrible.
la source
Vous devrez peut-être mettre à jour votre shell mongo. J'avais la version 2.4.9 du shell mongo localement, et j'ai eu cette erreur en essayant de me connecter à une base de données mongo 3. La mise à niveau de la version shell vers 3 a résolu le problème.
la source
Je sais que cela peut sembler évident, mais j'ai également dû utiliser un guillemet simple autour du u / n et du p / w avant que cela fonctionne
la source
mongo -u <myuser> -p <mypasswd
ne fonctionnait pas. Pourquoi çaadmin
fait une différence, ici?Dans MongoDB 3.0, il prend désormais en charge plusieurs mécanismes d'authentification.
Si vous avez commencé avec une nouvelle base de données 3.0 avec de nouveaux utilisateurs créés, ils auraient été créés à l'aide de SCRAM-SHA-1.
Vous aurez donc besoin d'un pilote capable de 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 à niveau à partir de 2.x avec des données utilisateur existantes, ils utiliseraient toujours MONGODB-CR, et la base de données d'authentification des utilisateurs devrait être mise à niveau:
http://docs.mongodb.org/manual/release-notes/3.0-scram/#upgrade-mongodb-cr-to-scram
Désormais, la connexion à MongoDB 3.0 avec des utilisateurs créés avec SCRAM-SHA-1 est nécessaire pour spécifier la base de données d'authentification (via la ligne de commande mongo client), et en utilisant d'autres mécanismes si vous utilisez un pilote.
$> mongo -u USER -p MOT DE PASSE --authenticationDatabase admin
Dans ce cas, la base de données "admin", qui est également la base par défaut, sera utilisée pour s'authentifier.
la source
Il semble que le problème soit qu'un utilisateur créé via la méthode décrite dans la documentation mongo n'a pas l'autorisation de se connecter à la base de données par défaut (test), même si cet utilisateur a été créé avec les rôles "userAdminAnyDatabase" et "dbAdminAnyDatabase".
la source
Accédez au shell du terminal et tapez
mongo
.Puis tapez
use db_name
.Tapez ensuite:
Essayez aussi:
db.getUsers()
la source
mongo 'mongodb://localhost:27017/admin' -u admin -p
2. Ensuite, passez à la base de données cible:> use targetDb
3. Ajoutez ensuite l'utilisateur> db.createUser(...)
Autre possibilité: lors de la création de l'utilisateur, vous avez peut-être été accidentellement dans
use
une base de données autre queadmin
celle que vous vouliez, ou autre. Vous devez définir--authenticationDatabase
la base de données sous laquelle l'utilisateur a été réellement créé.mongodb
semble vous mettre dans latest
base de données par défaut lorsque vous ouvrez le shell, de sorte que vous aurez besoin d'écrire--authenticationDatabase test
plutôt que--authenticationDatabase admin
si vous étiez accidentellementuse
INGtest
lors de l' exécutiondb.createUser(...)
.En supposant que vous ayez accès à la machine qui exécute l'instance mongodb, y pourrait désactiver l'autorisation d'
/etc/mongod.conf
entrée (commentaireauthorization
qui est imbriqué sous sécurité), puis redémarrer votre serveur, puis exécuter:Et vous pourriez obtenir quelque chose comme ceci:
Notez que la
db
valeur est égale àtest
. C'est parce que lorsque j'ai créé l'utilisateur, je n'ai pas exécutéuse admin
ouuse desiredDatabaseName
. Ainsi, vous pouvez supprimer l'utilisateur avecdb.dropUser("myusername")
, puis créer un autre utilisateur sous la base de données souhaitée comme suit:J'espère que cela aide quelqu'un qui était dans ma position de noob avec ce truc.
la source
Contrairement à MYSQl et à la plupart des SGBDR, MongoDB a une configuration différente.
Il n'est pas livré avec un utilisateur d'authentification de base intégré déjà configuré.Vous devez le configurer manuellement. Vous devez aller sur Mongo.conf et activer l'autorisation, veuillez l'activer avec précaution, faute de quoi cela provoquera une erreur lors du démarrage de votre instance mongo. Vous vérifiez ensuite si votre serveur mongo a démarré ou non.
L'étape suivante consiste à activer l'autorisation dans Mongo en tant qu'utilisateur: -
Nous devons créer un utilisateur disposant d'un accès root et changer la configuration d'authentification mongo.
Basculer vers Admin DB: -
Créer un utilisateur avec le privilège racine: -
Changez votre mongo.conf pour activer l'autorisation: -
Veuillez suivre ce guide étape par étape pour configurer l' authentification dans MongoDB.
la source
C'est une sorte de cas spécifique, mais au cas où quelqu'un arriverait ici avec mon problème:
Dans MongoHQ, il vous montrera un champ appelé "mot de passe", mais ce n'est en fait que le hachage du mot de passe. Vous devrez ajouter un nouvel utilisateur et stocker le mot de passe ailleurs (car MongoHQ ne vous le montrera pas).
la source
La bonne façon de se connecter à mongo shell est
mongo localhost: 27017 -u 'uuuuu' -p '> xxxxxx' --authenticationDatabase dbname
la source
Vous pouvez également essayer ceci: -
Je l'ai trouvé dans ce post
Ici, évidemment, l' hôte local peut être un autre hôte et le / admin peut être une autre base de données sur laquelle l'authentification a été appliquée
la source
Vérifiez la version mongo du client à partir duquel nous nous connectons au serveur mongo.
Mon cas, le serveur mongo était de la version Mongo4.0.0 mais mon client était de la version 2.4.9. Mettez à jour la version mongo pour mettre à jour mongo cli.
la source