web-dev-qa-db-fra.com

L'authentification MongoDB 3.2 a échoué

Je crée un utilisateur avec le jeu de commandes suivant. Cela devrait créer un utilisateur dans admin db ainsi que dans ma base de données cible (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 reçois 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 j'active les fonctionnalités de sécurité dans le fichier conf et redémarre le serveur:

security:
  authorization: enabled

L'erreur est toujours la 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
23
NarūnasK

Eh bien, vous devrez suivre plusieurs étapes pour créer un utilisateur avec succès.

Tout d'abord, vous devez créer un utilisateur administrateur. Je préfère créer un super utilisateur.

> use admin
> db.createUser({user: "root", pwd: "123456", roles:["root"]})

Redémarrez votre serveur MongoDB et activez l'authentification avec --auth drapeau.

> mongod --auth --port 27017 --dbpath /var/lib/mongodb

Une fois votre serveur installé, connectez-vous en tant qu'administrateur

> mongo <Host:port> -u "root" -p "123456" --authenticationDatabase "admin"

Une fois que vous êtes connecté, créez un utilisateur normal. En supposant que le nom de votre base de données d'utilisateurs est cd2.

> use cd2
> db.createUser({user: "cd2", pwd: "cd2", roles:["dbOwner"]})

Si vous voyez un message de réussite, déconnectez-vous de mongo Shell et reconnectez-vous avec les nouvelles informations d'identification de l'utilisateur.

> mongo <Host:port>/cd2 -u "cd2" -p "cd2"
58
Saleem

Notre expérience avec ce problème sur MongoDB (3.2.4) est qu’il s’agit d’un bogue ou d’une fonctionnalité non documentée. Si vous essayez de créer les utilisateurs et les 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 transitoires dans cette session) et ne sont pas vraiment persistants.

Solution: Essayez simplement de créer vos utilisateurs (sans authentification activée initialement sur MongoDB) et faites-le directement sur la console de votre serveur de base de données (localhost).

6
RodrigoM