Instructions pour ajouter un utilisateur à une base de données mongo pour mongo_orm

Vous ne voulez pas que votre application web accède à la base de données en utilisant l'utilisateur administrateur de la base de données. De plus, vous voulez qu'elle accède uniquement à un spécifique base de données - vous avez peut-être des bases de données supplémentaires dans votre instance de Mongo.

Conditions préalables :

mongo_orm attend la configuration de la base de données comme variables d'environnement ou comme un fichier config/database.yml dans votre projet.

Le fichier config/database.yml ressemble à ceci :

database_url : mongodb://janet:test@hostname:27017
nom_de_base_de_données : dbname

et 27017 est le numéro de port par défaut de mongo - si vous le définissez avec quelque chose d'autre, changez-le.

L'utilisateur est "janet".

et le mot de passe est "test" dans cet exemple.

Création d'un nouvel utilisateur sur l'instance mongo, en utilisant la console mongo

Connectez-vous à votre instance mongo. Exécutez la commande mongo :

mongo

(Je suppose que votre instance mongo se lie à localhost, au port par défaut).

Cela vous donnera la console mongo.

Important ! Vous devez passer à la base de données de l'administrateur pour vous authentifier !

utiliser l'administration

db.auth("admin","")

remplacez par le mot de passe administrateur que vous avez défini. Veuillez ignorer la stupide habitude de WordPress de changer les guillemets. Ils sont tous censés être des guillemets normaux..

Important : Faites pas changer la base de données vers la base de données cible pour créer le nouvel utilisateur ! Restez sur la base de données admin !

db.createUser(

{

utilisateur : "janet",

pwd : "test",

rôles : [{rôle : "readWrite", db : "dbname" }],

passwordDigestor : "serveur",

mécanismes : [“SCRAM-SHA-1″,”SCRAM-SHA-256”]

}

)

Remarque : les deux mécanismes sont nécessaires ! Si vous spécifiez seulement SCRAM-SHA-256mongo orm ne sera pas en mesure de se connecter.

passwordDigestor DOIT être "server". Il s'agit de ne peut pas être vrai. Veuillez noter qu'il semble y avoir une différence entre la console mongo et l'API mongo. (dans l'API mongo vous utiliseriez digestPassword : true

ceci donnera à l'utilisateur janet, avec le mot de passe test le rôle readWrite sur dbname.

Pour en savoir plus sur les rôles, cliquez ici.

suppression d'un utilisateur

utiliser l'administration

db.dropUser("janet")

Débogage

https://github.com/Studio3T/robomongo/issues/1041

Robo T3 ne semble pas être capable de créer des utilisateurs correctement, utilisez ma méthode de console ci-dessus.

(Il est toutefois capable de créer des bases de données).

image

comme le dit le dialogue, vous ne pouvez pas utiliser digestPassword via Robo T3 ou la console Mongo. Utilisez passwordDigestor : "server" à la place. Dans tous les cas, Robo T3 ne semble pas être capable de créer les utilisateurs correctement - utilisez la console.

db.serverStatus()

si cette commande vous donne :

> db.serverStatus()

{

"ok" : 0,

"errmsg" : "La commande serverStatus requiert une authentification",

"code" : 13,

"codeName" : "Unauthorized" (non autorisé)

}

Alors vous n'êtes pas connecté - il affichera une longue liste d'informations sur votre serveur lorsque vous serez connecté.

Trop d'utilisateurs sont authentifiés

2019-02-09T13:53:09.972+0000 E QUERY [js] Erreur : impossible d'ajouter un utilisateur : trop d'utilisateurs sont authentifiés.

_getErrorWithCode@src/mongo/shell/utils.js:25:13

DB.prototype.createUser@src/mongo/shell/db.js:1491:15

Si vous commencez à vous authentifier en tant qu'autres utilisateurs pour tester la connexion, cela se produira. Quittez la console, connectez-vous à nouveau, et authentifiez-vous une seule fois en tant qu'administrateur avant de créer de nouveaux utilisateurs.

Échec de l'authentification

Message : 'Domaine : 1, code : 11, échec de l'authentification.

Vous obtiendrez ce code d'erreur de mongo orm si ce dernier ne peut pas s'authentifier. Résistez à l'impulsion d'utiliser simplement la base de données en tant qu'administrateur. Relisez les informations que j'ai données ici. Assurez-vous que :

  • vous créez le nouvel utilisateur en utilisant la console mongo
  • vous avez spécifié SCRAM-SHA-1
  • l'utilisateur a été créé alors qu'il se trouvait dans la base de données de l'administrateur ("utiliser l'administration" ! !)
  • vous avez défini les rôles correctement