L'authentification MongoDB 3.2 a échoué
J'ai créer un utilisateur avec les commandes suivantes. Cela devrait créer l'utilisateur dans les deux admin
db ainsi que ma cible db (c2d):
# mongo 127.0.0.1:27017
MongoDB shell version: 3.2.6-29-g5c19788
connecting to: 127.0.0.1:27017/test
> use admin
switched to db admin
> show collections
system.users
system.version
> db.system.users.find()
> db.createUser({user:"cd2", pwd:"cd2", roles:[{role:"dbOwner", db: "c2d"}]})
Successfully added user: {
"user" : "cd2",
"roles" : [
{
"role" : "dbOwner",
"db" : "c2d"
}
]
}
> db.system.users.find()
{ "_id" : "admin.cd2", "user" : "cd2", "db" : "admin", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "4g6t9kC+godz7k6QQOfD+A==", "storedKey" : "m3tDZBQDU2Tlb1lIjLGyTHmr2QQ=", "serverKey" : "GSA4OXSod1s8mBuZBtfmXq2tlTo=" } }, "roles" : [ { "role" : "dbOwner", "db" : "c2d" } ] }
> use c2d
switched to db c2d
> db.createUser({user:"cd2", pwd:"cd2", roles:[{role:"dbOwner", db: "c2d"}]})
Successfully added user: {
"user" : "cd2",
"roles" : [
{
"role" : "dbOwner",
"db" : "c2d"
}
]
}
> use admin
switched to db admin
> db.system.users.find()
{ "_id" : "admin.cd2", "user" : "cd2", "db" : "admin", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "4g6t9kC+godz7k6QQOfD+A==", "storedKey" : "m3tDZBQDU2Tlb1lIjLGyTHmr2QQ=", "serverKey" : "GSA4OXSod1s8mBuZBtfmXq2tlTo=" } }, "roles" : [ { "role" : "dbOwner", "db" : "c2d" } ] }
{ "_id" : "c2d.cd2", "user" : "cd2", "db" : "c2d", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "vnMjnjfykVQS8ujQXeWaYw==", "storedKey" : "OYXivkmIwuTavlwTGfjrspT6j2E=", "serverKey" : "lw8xqzAaW8V4IQ9wOmQrG2VSp88=" } }, "roles" : [ { "role" : "dbOwner", "db" : "c2d" } ] }
Si j'essaie de me connecter, je suis accueilli avec un message d'erreur:
# mongo 127.0.0.1:27017/c2d -u c2d -p c2d
MongoDB shell version: 3.2.6-29-g5c19788
connecting to: 127.0.0.1:27017/c2d
2016-05-22T10:35:41.862+0100 E QUERY [thread1] Error: Authentication failed. :
DB.prototype._authOrThrow@src/mongo/shell/db.js:1441:20
@(auth):6:1
@(auth):1:2
exception: login failed
Puis-je activer les fonctionnalités de sécurité dans le fichier conf et redémarrer le serveur:
security:
authorization: enabled
D'erreur est toujours le même:
# mongo 127.0.0.1:27017/c2d -u c2d -p c2d
MongoDB shell version: 3.2.6-29-g5c19788
connecting to: 127.0.0.1:27017/c2d
2016-05-22T10:37:43.713+0100 E QUERY [thread1] Error: Authentication failed. :
DB.prototype._authOrThrow@src/mongo/shell/db.js:1441:20
@(auth):6:1
@(auth):1:2
exception: login failed
source d'informationauteur NarūnasK
Vous devez vous connecter pour publier un commentaire.
Bien, vous aurez besoin de prendre quelques étapes dans l'ordre pour créer un utilisateur avec succès.
Tout d'abord, vous devez créer un utilisateur administrateur. Je préfère la création de super-utilisateur.
Redémarrer votre serveur MongoDB et activer l'authentification avec
--auth
drapeau.Une fois que votre serveur est en place, connectez-vous à elle en tant qu'administrateur
> mongo <host:port> -u "root" -p "123456" --authenticationDatabase "admin"
Une fois que vous êtes connecté, créer un utilisateur normal. En supposant que l'utilisateur de votre nom de base de données est
cd2
.Si vous voyez le succès message vocal, débranchez-le de mongo shell et de renouer avec un nouvel utilisateur
les informations d'identification.
Notre expérience avec cette question sur MongoDB (3.2.4), c'est qu'il semble un bug ou une fonctionnalité non documentée.
Si vous tentez de créer des utilisateurs et des rôles à partir d'un shell distant (pas localhost), les utilisateurs sont créés, mais dès que vous quittez le shell, ils sont partis (ils sont de passage à cette session) et pas vraiment persisté.
Solution: Juste essayer de créer vos utilisateurs (sans authentification activée initialement sur MongoDB) et de le faire directement sur la console de votre serveur de base de données (localhost).