Wow tant de réponses compliquées / déroutantes ici.
C'est à partir de la v3.4 .
Réponse courte.
1) Démarrez MongoDB sans contrôle d'accès.
mongod --dbpath /data/db
2) Connectez-vous à l'instance.
mongo
3) Créez l'utilisateur.
use some_db
db.createUser(
{
user: "myNormalUser",
pwd: "xyz123",
roles: [ { role: "readWrite", db: "some_db" },
{ role: "read", db: "some_other_db" } ]
}
)
4) Arrêtez l'instance MongoDB et redémarrez-la avec le contrôle d'accès.
mongod --auth --dbpath /data/db
5) Connectez-vous et authentifiez-vous en tant qu'utilisateur.
use some_db
db.auth("myNormalUser", "xyz123")
db.foo.insert({x:1})
use some_other_db
db.foo.find({})
Réponse longue: lisez ceci si vous voulez bien comprendre.
C'est vraiment simple. Je vais abrutir ce qui suit https://docs.mongodb.com/manual/tutorial/enable-authentication/
Si vous voulez en savoir plus sur ce que les rôles font réellement, lisez plus ici: https://docs.mongodb.com/manual/reference/built-in-roles/
1) Démarrez MongoDB sans contrôle d'accès.
mongod --dbpath /data/db
2) Connectez-vous à l'instance.
mongo
3) Créez l'administrateur utilisateur. Ce qui suit crée un administrateur utilisateur dans la admin
base de données d'authentification. L'utilisateur est dbOwner
sur la some_db
base de données et NON sur la admin
base de données, c'est important de se rappeler.
use admin
db.createUser(
{
user: "myDbOwner",
pwd: "abc123",
roles: [ { role: "dbOwner", db: "some_db" } ]
}
)
Ou si vous souhaitez créer un administrateur qui est administrateur sur n'importe quelle base de données:
use admin
db.createUser(
{
user: "myUserAdmin",
pwd: "abc123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
4) Arrêtez l'instance MongoDB et redémarrez-la avec le contrôle d'accès.
mongod --auth --dbpath /data/db
5) Connectez-vous et authentifiez-vous en tant qu'administrateur utilisateur vers la admin
base de données d'authentification, PAS vers la some_db
base de données d'authentification. L'administrateur utilisateur a été créé dans la admin
base de données d'authentification, l'utilisateur n'existe pas dans la some_db
base de données d'authentification.
use admin
db.auth("myDbOwner", "abc123")
Vous êtes maintenant authentifié en tant que dbOwner
sur la some_db
base de données. Alors maintenant, si vous souhaitez lire / écrire / faire des trucs directement vers la some_db
base de données, vous pouvez y changer.
use some_db
//...do stuff like db.foo.insert({x:1})
// remember that the user administrator had dbOwner rights so the user may write/read, if you create a user with userAdmin they will not be able to read/write for example.
Plus d'informations sur les rôles: https://docs.mongodb.com/manual/reference/built-in-roles/
Si vous souhaitez créer des utilisateurs supplémentaires qui ne sont pas des administrateurs d'utilisateurs et qui ne sont que des utilisateurs normaux, continuez à lire ci-dessous.
6) Créez un utilisateur normal. Cet utilisateur sera créé dans la some_db
base de données d'authentification ci-dessous.
use some_db
db.createUser(
{
user: "myNormalUser",
pwd: "xyz123",
roles: [ { role: "readWrite", db: "some_db" },
{ role: "read", db: "some_other_db" } ]
}
)
7) Quittez le shell mongo, reconnectez-vous, authentifiez-vous en tant qu'utilisateur.
use some_db
db.auth("myNormalUser", "xyz123")
db.foo.insert({x:1})
use some_other_db
db.foo.find({})