sql >> Database teknologi >  >> NoSQL >> MongoDB

Kom godt i gang med MongoDB User Management

En af de første opgaver efter at have fået din MongoDB-databaseserver op at køre, er at konfigurere dine brugere og databaser. I dette indlæg vil vi gennemgå nogle af de almindelige scenarier for at oprette og konfigurere brugere i MongoDB. MongoDB-brugeradministration er forbedret meget betydeligt i forhold til de to foregående udgivelser og er nu en dygtig og funktionel brugeradministrationsmodel. Brugere kan tildeles forskellige roller, og roller kan konfigureres med ønskede privilegier. Der er flere indbyggede brugerroller at bruge, eller du kan oprette dine egne tilpassede roller.

Eksemplerne i dette indlæg bruger en 2.6.4-klient og en 2.6.4-server. Der blev foretaget betydelige ændringer i brugerstyringsmodellen fra 2.4 til 2.6. Så hvis du bruger en 2.4-klient, vil mange af eksemplerne i dette indlæg ikke fungere for dig. Du kan tjekke versionen af ​​yoMongoDBodb-klienten ved hjælp af følgende syntaks:

mongo --version

Tilføjelse af en bruger til en database

Det første trin efter oprettelse af din bruger er at oprette din applikationsdatabase:

brug applicationdb;

Efter at have oprettet denne database, ønsker vi at oprette den bruger, der vil blive brugt af applikationen til at skrive til denne database. Vi ønsker, at denne bruger skal have læse- og skriverettigheder til databasen:

db.createUser({'user':'appuser', 'pwd':'', roller:['readWrite']});

Nogle gange ønsker vi også at tilføje brugere, der har skrivebeskyttet adgang til databasen. For eksempel vil vi måske tilføje en analysebruger, som kun har skrivebeskyttet adgang til databasen:

db.createUser({'user':'analyticsuser', 'pwd':'', roller:['read']});

Nu hvor brugerne er oprettet, lad os prøve at oprette forbindelse som denne bruger fra MongoDB-konsollen:

mongo -u 'appuser' -p /applicationdbMongoDB shell version:2.6.4 forbinder til:/applicationdb>

Du burde have oprettet forbindelse! Bemærk "/applicationdb" i slutningen af ​​syntaksen fortæller MongoDB at godkende 'appuser' på 'applicationdb'-databasen.

Tilføjelse af en bruger til flere databaser

I mange scenarier skal vi oprette flere databaser på serveren. For eksempel, i dette scenarie, skal vi muligvis oprette en anden database 'analyticsdb' for at gemme resultaterne af analysen. 'Analyticsuser' har nu brug for 'readonly'-adgang på 'applicationdb' og 'readWrite'-tilladelser på 'analyticsdb'.

Så hvordan opnår vi dette? Skal vi tilføje 'analyticsuser' til hver database? Dette skaber et ledelsesmareridt på lang sigt, da mange brugere og databaser tilføjes. Heldigvis er der en simpel løsning. Vi kan centralisere rolletildelingerne for en bruger og gemme dem i en enkelt database. I dette scenarie foretrækker jeg at gemme disse opgaver i 'admin'-databasen, da det er centrum for central administration på serveren, men du kan også gemme det i en separat database:

brug admindb.createUser({user:'analyticsuser', pwd:'', roles:[{'role':'read', 'db':'applicationdb'}, { 'role':' readWrite', 'db':'analyticsdb'}]});

Når den er tilføjet, kan du bruge 'vis brugere' til at vise detaljerne om dine brugere. Sådan ser min administratordatabase ud:

brug admin> vis brugere{"_id" :"admin.admin","user" :"admin","db" :"admin","roles" :[{ "role" :"root"," db" :"admin"},{"role" :"gendan","db" :"admin"}]}{"_id" :"admin.analyticsuser","user" :"analyticsuser","db" :"admin","roles" :[{"role" :"read","db" :"applicationdb"},{"role" :"readWrite","db":'analyticsdb"}]}>

Nu hvor vores bruger er tilføjet, lad os prøve at oprette forbindelse fra konsollen for at bekræfte godkendelsen ved at bruge den syntaks, vi brugte ovenfor:

mongo -u 'analyticsuser' -p  /applicationdb

Autentificering mislykkes dog:

2014-10-06T23:11:42.616+0000 Fejl:18 { ok:0.0, errmsg:"auth failed", kode:18 } på src/mongo/shell/db.js:1210exception:login mislykkedes

før>

Årsagen er, at 'analyticsuser' er defineret på 'admin'-databasen og ikke på 'applicationdb'. Måden at angive dette på er at bruge parameteren ‘–authenticationDatabase’.

mongo -u 'analyticsuser' -p  /applicationdb --authenticationDatabase 'admin'

Denne gang lykkes login:

MongoDB shell version:2.6.4 forbinder til:/applicationdb

For bedre at forstå de forskellige andre indbyggede roller, der er tilgængelige i MongoDB, kan du henvise til MongoDB-dokumentationen om indbyggede roller. Som altid, hvis du har yderligere spørgsmål, kan du kontakte os på [email protected].


  1. Tjek om der findes et indeks i mongodb

  2. De 6 bedste Redis-hukommelsesanalyseværktøjer

  3. Benchmark Apache HBase vs Apache Cassandra på SSD i et cloudmiljø

  4. Forårsaget af:java.lang.IllegalArgumentException:CONTAINING (1):[IsContaining, Containing, Contains]understøttes ikke for redis-forespørgselsafledning - Redis