sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur man skapar användare och lägger till roll i MongoDB

MongoDB är en plattformsoberoende dokumentorienterad databas som gör datalagring och hämtning snabbt och enkelt. Databasen använder en JSON-liknande struktur för dokumenten, främst bekant för moderna applikationer.

MongoDB använder samlingar och manuskript där dokument består av nyckel-värdepar, den grundläggande enheten för data i MongoDB. Däremot innehåller samlingar funktioner och dokument som motsvarar relationsdatabastabeller.

Skapa en ny användare i MongoDB

För att lägga till nya användare till systemet tillhandahåller MongoDB en intern teknik som kallas db.createUser(). I motsats till traditionella databassystem är MongoDB-användare bundna till en lokal databas som kallas en Authentication Database. De är alltså inte globalt bundna, som konventionella SQL-databaser.

Dessutom fungerar autentiseringsdatabasen och användarens namn som en unik identifierare. Därför, om två användare skapas i olika databaser men delar samma namn, identifieras de som två separata användare. Därför, om man vill skapa en enda användare med behörigheter på flera databaser, bör man tillåta en enskild användare att ha rättigheter/roller till den tillämpliga databasen istället för att bygga användaren flera gånger i olika databaser.

Exempel:

db.createUser(

{       user: "Foss",

        pwd: "password",

         roles:[{role: "userAdminAnyDatabase" , db:"admin"}]})

Kommandon för användarhantering

Namn/n Beskrivning
createUser Denna metod skapar en ny användare.
dropAllUsersFromDatabase Tar bort alla användare från en databas.
dropUser Beviljer en uppgift och dess privilegier till en användare.
grantRolesToUser En roll och dess tillhörande behörigheter tilldelas en användare.
revokeRolesFromUser Tar bort en användares roll.
updateUser Denna metod används för att uppdatera en användares data.
usersInfo Denna metod returnerar information om användarna som tillhandahålls.

Lägga till en användare

Använd metoden "db.createUser()" när du lägger till användaren i en specificerad DB. Det är viktigt att notera att det är mycket enklare att lägga till användare med alternativ än att infoga ett användardokument i en icke-relationell databas.

Exempel:

use foss               // specify the DB

db.createUser(

  {

    user: "fosslinux",

    pwd: passwordPrompt(),  // or cleartext password if you wish

    roles: [

       { role: "read", db: "foss" },

       { role: "read", db: "articles" },

       { role: "read", db: "tutorials" },

       { role: "readWrite", db: "tutorialguides" }

    ]

  }

)

När du har anslutit MongoDB-instansen i exemplet ovan kan du bifoga den till foss DB för att utföra kommandot db.createUser(). Databasen som används kommer att fungera som användarens autentiseringsdatabas.

Lösenordet och användarnamnet anges i dokumentet som innehåller vårt metodanrop som nyckel-värdepar. Användningen av roller styr åtkomsten till databaser. En användare måste ha en roll för att komma åt vilken databas som helst, även sin egen autentiseringsdatabas. Dessutom ges en användare tillgång till andra databaser i systemet med hjälp av roller. Således är en användares privilegier inte begränsade till deras autentiseringsdatabas. Därför gör detta det möjligt för användare att ha olika privilegier över de många databaserna efter behov. Principen om minsta privilegium tillåter användare att hålla databasens åtkomstomfång så liten som möjligt.‍

Hur man skapar en administratörsanvändare i MongoDB

Att skapa en administratörsanvändare i MongoDB görs med metoden db.createUser() som låter dig skapa en användare. Men efter att ha skapat en användare måste du tilldela administratörsroller. Dessa roller ger användaren administratörsbehörighet.

Skapa en användare för en enda databas i MongoDB

Om vi ​​vill skapa en användare som bara kan arbeta med en databas kan vi använda ett liknande kommando som ovan, men vi måste använda alternativet "userAdmin" bara en gång.

Exempel:

db.createUser(

{        user: "Fosslinux",

         pwd: "password",

         roles:[{role: "userAdmin" , db:"Foss"}]})

Koduppdelning:

  1. Först och främst bör man ange "användarnamn" och "lösenord" som ska skapas.
  2. Tilldela rollen för den användaren, som är databasadministratören; detta är tilldelat rollen "användaradmin" eftersom rollen tillåter användaren att endast ha administrativa rättigheter till databasen som specificeras i DB
  3. Slutligen ställer DB-parametern den databas som användaren ska ha administrativa rättigheter på.

Hantera användare

För att hantera användare måste man förstå de roller som behöver definieras eftersom MongoDB har en hel lista med funktioner som läs-roll och läs-skriv-rollen. Kommandot "read role" tillåter endast skrivskyddad åtkomst till databaserna. "Läs-skriv-rollen" ger läs- och skrivåtkomst till databasen; detta innebär att användaren kan utfärda uppdateringen, infoga och ta bort kommandon på samlingarna i den databasen.

Exempel:

db.createUser(
{
            user: "Foss",

            pwd: "password",

            roles:[

            {
                        role: "read" , db:"Tutorials"},

    {
                        role: "readWrite" , db:"Guides"}

            }
                          ]
})

Exemplet ovan visar att en användare känd som Foss skapas och tilldelas flera roller i flera DB:er. I samma modell får Foss läsbehörighet i databasen "Tutorials" och läs-skrivbehörighet i databasen "Guides".

Lägga till roller i MongoDB

Roller ger användare tillgång till MongoDB-resurser. Dessutom tillhandahåller MongoDB flera inbyggda roller som gör det möjligt för administratörer att kontrollera åtkomsten till ett MongoDB-system. Men när dessa roller inte kan beskriva den önskade uppsättningen privilegier, kan man skapa nya roller i en viss databas. Förutom funktioner som skapats i administratörsdatabasen kan en roll bara innehålla rättigheter som gäller dess databas och de som ärvts från andra roller.

En roll som definieras i admindatabasen kan innehålla rättigheter som är tillämpliga på admindatabasen, andra databaser eller klusterresursen och kan ärva roller från andra databaser. För att etablera en ny roll, använd "db.createRole()" och ange rättighetsmatrisen och den ärvda rollmatrisen.

MongoDB definierar roller unikt genom att kombinera databasnamnet med rollnamnet. Varje roll är anpassad till databasen du skapar, men MongoDB lagrar all rollinformation i adminSystemRoles-samlingen i admindatabasen. Till exempel måste åtgärderna för kreativ roll och bevilja roller på databasresursen säkerställa att roller skapas och beviljas i databasen. GrantRole specificerar privilegierna för de nya rollerna och rollerna som ska ärvas. User AdminAnyDatabase och de inbyggda rollerna användaradmin tillhandahåller CreateRole och bevilja roller åtgärder på sina respektive resurser.

För att skapa en roll med de angivna autentiseringsbegränsningarna måste man ställa in AuthenticationRetrictions-åtgärden på databasresursen, varvid funktionen sedan skapas.

Metoden db.grantRole to User () använder följande argument;

Parameter Typ Beskrivning
Användare Sträng Innehåller namnet på användaren som rollerna ska beviljas.
Roller Array Innebär en rad ytterligare roller att tilldela användaren.
Skriv problem Dokument Det är valfritt och syftar till att modifiera kommandot. Det tar också samma fält med kommandot get last error.

Parametern roller kan specificera både användardefinierade och inbyggda funktioner, vilket kan uppnås genom att välja rollen med dess namn. Detta uppnås genom att ansluta till mongod (en primär demonprocess för MongoDB-system som hanterar dataförfrågningar, utför bakgrundshanteringsoperationer och hanterar dataåtkomst). Alternativt, mongos (som ansvarar för att upprätta en koppling mellan klientapparna och det sönderdelade klustret ), med rättigheterna som anges i kravavsnittet. Till exempel kan min användaradministratör skapad i en aktivera åtkomstkontroll skapa roller i admin och andra databaser.

Rollhanteringskommandon

Namn\s Beskrivning
createRole Skapar en roll och säger vad den kan göra.
dropRole Tar bort rollen som ställts in av användaren.
dropAllRolesFromDatabase Tar bort alla roller som användare har konfigurerat från en databas.
grantPrivilegesToRole tilldelar privilegier till en roll som användaren väljer.
grantRolesToRole berättar vilka roller en användardefinierad roll kan ärva privilegier från.
invalidateUserCache När du använder invalidateUserCache rensas cacheminnet i minnet för användarinformation, såsom autentiseringsuppgifter och roller.
revokePrivilegesFromRole tar bort privilegierna från en användardefinierad roll som har dem.
revokeRolesFromRole tar bort de ärvda rollerna från en användardefinierad roll som du inte vill ha.
rollInfo returerar information om den eller de roller du vill ha.
updateRole Uppdaterar en roll som konfigurerats av användaren.

Slutsats

MongoDB-databasen, som gör att lagring och hämtning av data är enkel och snabb, kan tillåta en att skapa en användare med kommandot "db.createUser()". Å andra sidan ger kommandot "AdminAnyDatabase" användarna alla privilegier för att komma åt DB under administratörsrollen. Den här artikeln har gått den extra milen och illustrerat hur man beviljar roller och rättigheter. Vi hoppas att du tycker att det är användbart. Om ja, glöm inte att lämna en kommentar i kommentarsfältet nedan.


  1. Hur man kör råa mongodb-kommandon från pymongo

  2. Pizza Tribes - Ett webbläsarbaserat realtidsstrategispel för flera spelare

  3. Felmeddelande:MongoError:dålig autentisering Misslyckades via URI-strängen

  4. Sellerifel:result.get timeout