MongoDB-Authentifizierungsbeispiel

Beispiel für eine MongoDB-Authentifizierung

Dieses Handbuch zeigt Ihnen, wie Sie die Authentifizierung in MongoDB aktivieren. Die Authentifizierung ist standardmäßig deaktiviert. Um es zu konfigurieren, müssen Sie zuerst einen Benutzer zur Datenbank "admin" hinzufügen.

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

Note
Benutzer mit normalem Zugriff auf die Datenbank "admin" haben Lese- und Schreibzugriff auf alle anderen Datenbanken. Benutzer mit schreibgeschütztem Zugriff auf die Datenbank "admin" haben nur in alle Datenbanken gelesen.

P.S This example is using MongoDB version 2.2.3

Authentifizierungsbeispiel

In einem vollständigen Beispiel können Sie der Administrator-Datenbank einen "Administrator" -Benutzer und der "Testdb" -Datenbank einen normalen Benutzer hinzufügen und die Authentifizierung durchführen.

Terminal 1 - Starten Sie MongoDB im sicheren Modus. Eine Authentifizierung ist erforderlich.

$mongo --auth

Terminal 2 - MongoDB-Client, selbsterklärend siehe Kommentar „#“

$ 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" }
>

Erledigt.