Wow, tant de réponses compliquées/confuses ici.
Ceci est en date du 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 un 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 très simple. Je vais simplifier ce qui suit https://docs.mongodb.com/manual/tutorial/enable-authentication/
Si vous souhaitez en savoir plus sur le rôle réel de ces fonctions, cliquez 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'utilisateur administrateur. _L'exemple suivant crée un utilisateur administrateur dans la section admin
base de données d'authentification. L'utilisateur est un dbOwner
sur le some_db
et NON sur la base de données admin
base de données, il est important de s'en souvenir._
use admin
db.createUser(
{
user: "myDbOwner",
pwd: "abc123",
roles: [ { role: "dbOwner", db: "some_db" } ]
}
)
Ou si vous voulez créer un administrateur qui est administrateur de 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 un contrôle d'accès.
mongod --auth --dbpath /data/db
5) Connectez-vous et authentifiez-vous en tant qu'administrateur de l'utilisateur vers le admin
la base de données d'authentification, PAS vers la some_db
base de données d'authentification. _L'utilisateur administrateur a été créé dans le admin
la base de données d'authentification, l'utilisateur n'existe pas dans la base de données d'authentification. some_db
base de données d'authentification._
use admin
db.auth("myDbOwner", "abc123")
_Vous êtes maintenant authentifié en tant que dbOwner
sur le some_db
base de données. Donc maintenant si vous souhaitez lire/écrire/faire des choses directement vers la some_db
vous pouvez changer de base de données._
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 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 sont juste des utilisateurs normaux, continuez à lire ci-dessous.
6) Créez un utilisateur normal. _Cet utilisateur sera créé dans le 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({})
4 votes
Ceci pour MongDB version 2.2.x
29 votes
Dans Mongo 3.0.4, la commande pour créer un utilisateur est la suivante db.createUser() .
4 votes
Veuillez suivre cette procédure pour créer un utilisateur administrateur sur Mongodb 3.0. docs.mongodb.org/v3.0/tutorial/add-user-administrator
3 votes
Une mise à jour pour MongoDB 3.0+ : Comment configurer l'authentification dans MongoDB 3.0 .
2 votes
Pour être clair, cela ne crypte pas les octets qui passent sur le fil. C'est seulement pour le contrôle d'accès.
0 votes
J'ai dû utiliser
service mongod restart
au lieu de./mongodb/bin/mongod
.