sql >> Databáze >  >> NoSQL >> MongoDB

Začínáme se správou uživatelů MongoDB

Jedním z prvních úkolů po spuštění databázového serveru MongoDB je konfigurace uživatelů a databází. V tomto příspěvku si projdeme některé běžné scénáře vytváření a konfigurace uživatelů v MongoDB. Správa uživatelů MongoDB se oproti předchozím dvěma vydáním velmi výrazně zlepšila a nyní je schopným a funkčním modelem správy uživatelů. Uživatelům lze přiřadit různé role a role lze konfigurovat s požadovanými oprávněními. Existuje několik integrovaných uživatelských rolí, které lze použít, nebo si můžete vytvořit své vlastní role.

Příklady v tomto příspěvku používají klienta 2.6.4 a server 2.6.4. Značné změny byly provedeny v modelu správy uživatelů z 2.4 na 2.6. Pokud tedy používáte klienta 2.4, mnoho příkladů v tomto příspěvku pro vás nebude fungovat. Verzi klienta yoMongoDBodb můžete zkontrolovat pomocí následující syntaxe:

mongo --version

Přidání uživatele do databáze

Prvním krokem po vytvoření uživatele je vytvoření databáze aplikace:

použijte applicationdb;

Po vytvoření této databáze chceme vytvořit uživatele, kterého bude aplikace používat k zápisu do této databáze. Chceme, aby tento uživatel měl oprávnění pro čtení a zápis do databáze:

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

Někdy také chceme přidat uživatele, kteří mají k databázi přístup pouze pro čtení. Můžeme například chtít přidat analytického uživatele, který má k databázi přístup pouze pro čtení:

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

Nyní, když jsou uživatelé vytvořeni, pokusme se připojit jako tento uživatel z konzole MongoDB:

mongo -u 'appuser' -p /applicationdbMongoDB shell verze:2.6.4připojování k:/applicationdb>

Měli byste se úspěšně připojit! Všimněte si, že „/applicationdb“ na konci syntaxe říká MongoDB, aby autentizoval „appuser“ v databázi „applicationdb“.

Přidání uživatele do více databází

V mnoha scénářích potřebujeme na serveru vytvořit více databází. V tomto scénáři můžeme například potřebovat vytvořit další databázi „analyticsdb“, abychom uložili výsledky analýzy. Uživatel „analyticsuser“ nyní potřebuje přístup „pouze pro čtení“ k „applicationdb“ a oprávnění „readWrite“ k „analyticsdb“.

Jak toho tedy dosáhneme? Měli bychom do každé databáze přidat „analyticsuser“? To vytváří z dlouhodobého hlediska noční můru správy, protože se přidává mnoho uživatelů a databází. Naštěstí existuje jednoduché řešení. Můžeme centralizovat přiřazení rolí pro uživatele a uložit je do jediné databáze. V tomto scénáři dávám přednost ukládání těchto přiřazení do databáze „admin“, protože je to centrum centrální správy na serveru, ale můžete je také uložit do samostatné databáze:

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

Po přidání můžete použít „zobrazit uživatele“ k zobrazení podrobností o vašich uživatelích. Moje databáze administrátorů vypadá takto:

use admin> zobrazit uživatele{"_id" :"admin.admin","user" :"admin","db" :"admin","roles" :[{ "role" :"root"," db" :"admin"},{"role" :"restore","db" :"admin"}]}{"_id" :"admin.analyticsuser","user" :"analyticsuser","db" :"admin","roles" :[{"role" :"read","db" :"applicationdb"},{"role" :"readWrite","db" :'analyticsdb"}]}>

Nyní, když je náš uživatel přidán, zkusme se připojit z konzole a ověřit ověření pomocí syntaxe, kterou jsme použili výše:

mongo -u 'analyticsuser' -p  /applicationdb

Ověření se však nezdařilo:

2014-10-06T23:11:42.616+0000 Error:18 { ok:0.0, errmsg:"auth failed", code:18 } at src/mongo/shell/db.js:1210exception:login failed 

Důvodem je, že „analyticsuser“ je definován v databázi „admin“, nikoli v „applicationdb“. Způsob, jak to určit, je použít parametr ‚–authenticationDatabase‘.

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

Tentokrát bylo přihlášení úspěšné:

Verze prostředí MongoDB:2.6.4připojování k:/applicationdb

Chcete-li lépe porozumět různým dalším integrovaným rolím dostupným v MongoDB, můžete se podívat na dokumentaci MongoDB o vestavěných rolích. Jako vždy, pokud máte další otázky, můžete nás kontaktovat na adrese [email protected].


  1. Jak nastavit handlery v RedMQ z událostí vyvolaných v mé doméně

  2. Jak zlepšit využití CPU serveru Redis?

  3. Jak omezit počet aktualizací dokumentů v mongodb

  4. Nodejs, nečeká na dokončení dotazu Redis, než bude pokračovat v provádění