Hur man skapar användare och lägger till roll i MongoDB
⚡ Smart sammanfattning
Skapa en användare och lägga till en roll i MongoDB förlitar sig på metoden db.createUser() för att definiera autentiseringsuppgifter, tilldela inbyggda roller och räckviddsbehörigheter till specifika databaser, vilket stärker åtkomstkontrollen över administrativa konton och konton för enskilda databaser.
Vad är inbyggda roller i MongoDB?
Innan du skapar ett konto är det bra att förstå de inbyggda roller som MongoDB tillhandahåller. En roll är en namngiven samling behörigheter, och varje behörighet kopplar ihop en resurs (en databas eller samling) med de åtgärder som är tillåtna på den. Att tilldela en roll under användarskapandet avgör därför exakt vad det kontot kan göra.
MongoDB grupperar sina inbyggda roller i databasanvändarroller, databasadministrationsroller, klusteradministrationsroller, säkerhetskopierings- och återställningsroller samt superanvändarroller. Tabellen nedan sammanfattar de roller som används oftast vid hantering av användare:
| Roll | Kategori | Beviljade privilegier |
|---|---|---|
| läsa | Databasanvändare | Skrivskyddad åtkomst till alla icke-systemsamlingar i en databas. |
| läsaSkriva | Databasanvändare | Läsåtkomst plus infoga, uppdatera och ta bort i samlingar. |
| dbAdmin | Databasadministratör | Schema-, indexerings- och statistikhantering för en databas. |
| användarAdmin | Databasadministratör | Skapa och ändra användare och roller i en enda databas. |
| användareAdminValfri databas | Superuser | Användaradministration över varje databas i instansen. |
| rot | Superuser | Full tillgång till alla resurser och operationer. |
MongoDB Skapa administratörsanvändare
Skapa en användaradministratör i MongoDB görs genom att använda metoden createUser. Följande exempel visar hur detta kan göras.
db.createUser(
{ user: "Guru99",
pwd: "password",
roles:[{role: "userAdminAnyDatabase" , db:"admin"}]})
Code Förklaring:
- Det första steget är att ange "användarnamn" och "lösenord" som måste skapas.
- Det andra steget är att tilldela en roll för användaren. Eftersom det måste vara en databasadministratör har vi tilldelat rollen "userAdminAnyDatabase". Denna roll tillåter användaren att ha administrativa behörigheter till alla databaser i MongoDB.
- Parametern db anger admindatabasen, som är en speciell metadatabas inom MongoDB som innehåller informationen för den här användaren.
Om kommandot utförs framgångsrikt kommer följande utdata att visas:
Produktion:
Utdata visar att en användare kallar "Guru99” skapades och den användaren har behörighet över alla databaser i MongoDB.
MongoDB Skapa användare för enstaka databas
För att skapa en användare som ska hantera en enda databas kan vi använda samma kommando som nämnts ovan, men vi behöver bara använda alternativet "userAdmin".
Följande exempel visar hur detta kan göras:
db.createUser(
{
user: "Employeeadmin",
pwd: "password",
roles:[{role: "userAdmin" , db:"Employee"}]})
Code Förklaring:
- Det första steget är att ange "användarnamn" och "lösenord" som måste skapas.
- Det andra steget är att tilldela en roll för användaren, som i det här fallet, eftersom det måste vara en databasadministratör, tilldelas rollen "userAdmin". Denna roll tillåter användaren att ha administrativa behörigheter endast till den databas som anges i db-alternativet.
- Parametern db anger till vilken databas användaren ska ha administrativa rättigheter.
Om kommandot utförs framgångsrikt kommer följande utdata att visas:
Produktion:
Utdatat visar att en användare som heter "Employeeadmin" skapades och att användaren endast har privilegier på databasen "Employee".
Hantera användare
Först, förstå de roller som du behöver definiera. Det finns en hel lista med roller tillgängliga i MongoDBTill exempel finns det rollen ”läs”, som endast tillåter skrivskyddad åtkomst till databaser, och sedan finns det rollen ”läs- och skrivåtkomst”, som ger läs- och skrivåtkomst till databasen. Det betyder att användaren kan utfärda kommandona infoga, ta bort och uppdatera på samlingar i den databasen.
db.createUser(
{
user: "Mohan",
pwd: "password",
roles:[
{ role: "read" , db:"Marketing" },
{ role: "readWrite" , db:"Sales" }
]
})
Kodavsnittet ovan visar att en användare som heter Mohan skapas och att han tilldelas flera roller i flera databaser. I exemplet ovan ges han läsbehörighet till databasen "Marknadsföring" och läs- och skrivbehörighet till databasen "Försäljning".
Så här visar och hanterar du MongoDB användare
Efter att konton finns, MongoDB tillhandahåller en uppsättning kommandon för att inspektera, uppdatera och ta bort dem utan att släppa demping och återskapa varje användare. Dessa kommandon körs mot databasen där användaren skapades, så växla till rätt databas med use-satsen innan du utfärdar dem.
De vanligaste kommandona för användarhantering är:
- db.getUsers() — listar alla användare som definierats i den aktuella databasen tillsammans med de roller var och en innehar.
- db.getUser("användarnamn") — returnerar informationen om ett enda konto, vilket är användbart för granskningsbehörigheter.
- db.grantRolesToUser() — lägger till en eller flera roller till en befintlig användare utan att påverka nuvarande roller.
- db.revokeRolesFromUser() — tar bort specifika roller och skärper åtkomsten när ansvarsområden ändras.
- db.changeAnvändarlösenord() — återställer lösenordet för ett konto medan keepping dess roller intakta.
- db.dropUser() — tar bort en användare permanent från databasen.
Exemplet nedan beviljar en extra roll, återkallar en annan, återställer ett lösenord och tar slutligen bort kontot:
// List all users in the current database db.getUsers() // Grant an additional role to an existing user db.grantRolesToUser("Employeeadmin", [{ role: "readWrite", db: "Employee" }]) // Remove a role from a user db.revokeRolesFromUser("Employeeadmin", [{ role: "userAdmin", db: "Employee" }]) // Change a user's password db.changeUserPassword("Employeeadmin", "newPassword") // Delete a user db.dropUser("Employeeadmin")
Att köra db.getUsers() igen efter dessa åtgärder bekräftar att ändringarna har tillämpats och att endast de avsedda kontona och rollerna finns kvar.
Bästa metoder för MongoDB Användarhantering
Välplanerade användarkonton håller en MongoDB Säker och enkel att granska driftsättningen. Följande metoder minskar risken för oavsiktlig dataexponering och missbruk av privilegier:
- Tillämpa lägsta privilegium: Ge endast de roller som ett konto verkligen behöver, och prioritera readWrite på en enda databas framför breda administrativa roller.
- Undvik rot i produktionen: Reservera rollerna root och userAdminAnyDatabase för installations- och nöduppgifter snarare än daglig drift.
- Aktivera autentisering: Starta servern med alternativet –auth så att autentiseringsuppgifterna faktiskt tillämpas.
- Använd starka lösenord: Kombinera längd och komplexitet och rotera lösenord med db.changeUserPassword() enligt ett schema.
- Revision regelbundet: Review db.getUsers() matar ut regelbundet och tar bort konton som inte längre behövs.
Tillsammans säkerställer dessa vanor att varje konto motsvarar ett verkligt behov och att åtkomst kan tracnärhelst en säkerhetsgranskning äger rum.






