Exemple d’authentification MongoDB

Exemple d'authentification MongoDB

Ce guide vous montre comment activer l'authentification dans MongoDB. L'authentification est désactivée par défaut. Pour le configurer, vous devez d'abord ajouter un utilisateur à la base de données «admin».

> show dbs
admin  #add single user to this database
testdb

Note
Les utilisateurs ayant un accès normal à la base de données «admin», ONT accès en lecture et en écriture à toutes les autres bases de données. Les utilisateurs ayant un accès en lecture seule à la base de données «admin» N'ONT lu que toutes les bases de données.

P.S This example is using MongoDB version 2.2.3

Exemple d'authentification

Voir un exemple complet pour ajouter un utilisateur «admin» à la base de données admin et un utilisateur normal à la base de données «testdb», et comment effectuer l'authentification.

Terminal 1 - Démarrez MongoDB en mode sécurisé, l'authentification est requise.

$mongo --auth

Terminal 2 - Client MongoDB, voir le commentaire «#» pour plus d'explications

$ mongo
MongoDB shell version: 2.2.3
connecting to: test
> use admin                  #1. connect to the "admin" database.
switched to db admin
> db.addUser("admin","password") #2. add a user "admin" to the admin database.
{
    "user" : "admin",
    "readOnly" : false,
    "pwd" : "90f500568434c37b61c8c1ce05fdf3ae",
    "_id" : ObjectId("513af8cac115e7a6b4bcceb9")
}
addUser succeeded, but cannot wait for replication since we no longer have auth

> use testdb             #3. connect to the "testdb" database.
switched to db testdb
> show collections           #4. now, read and write need authentication
Sat Mar  9 16:54:57 uncaught exception: error: {
    "$err" : "unauthorized db:testdb ns:testdb.system.namespaces lock type:0 client:127.0.0.1",
    "code" : 10057
}
> use admin              #5. connect back to the "admin" database.
switched to db admin
> db.auth("admin","password")        #6. performs authentication, 1 means succeed, 0 means failed
1
> use testdb             #7. connect to the "testdb" database.
switched to db testdb
> show collections           #8. no problem, it shows all collections
system.indexes
user
> db.addUser("testdb","password")       #9. add another user "testdb" to the "testdb" database.
{
    "user" : "testdb",
    "readOnly" : false,
    "pwd" : "b9ff75cbf18bd98d8554efec12c72090",
    "_id" : ObjectId("513af934c115e7a6b4bcceba")
}
> show collections
system.indexes
system.users                #10. All users' data are stored in this system.users collection.
user
> db.system.users.find()
{ "_id" : ObjectId("513af934c115e7a6b4bcceba"), "user" : "testdb", "readOnly" : false, "pwd" : "b9ff75cbf18bd98d8554efec12c72090" }
>

Terminé.