MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Pierwsze kroki z zarządzaniem użytkownikami MongoDB

Jednym z pierwszych zadań po uruchomieniu serwera bazy danych MongoDB jest skonfigurowanie użytkowników i baz danych. W tym poście omówimy niektóre z typowych scenariuszy tworzenia i konfigurowania użytkowników w MongoDB. Zarządzanie użytkownikami MongoDB znacznie się poprawiło w porównaniu z poprzednimi dwiema wersjami i jest teraz wydajnym i funkcjonalnym modelem zarządzania użytkownikami. Użytkownikom można przypisać różne role, a role można skonfigurować z żądanymi uprawnieniami. Dostępnych jest kilka wbudowanych ról użytkownika lub możesz utworzyć własne role niestandardowe.

Przykłady w tym poście używają klienta 2.6.4 i serwera 2.6.4. W modelu zarządzania użytkownikami wprowadzono znaczne zmiany z 2,4 na 2,6. Tak więc, jeśli używasz klienta 2.4, wiele przykładów w tym poście nie będzie dla ciebie działać. Możesz sprawdzić wersję klienta yoMongoDBodb za pomocą następującej składni:

mongo --version

Dodawanie użytkownika do bazy danych

Pierwszym krokiem po utworzeniu użytkownika jest utworzenie bazy danych aplikacji:

use applicationdb;

Po utworzeniu tej bazy danych chcemy utworzyć użytkownika, który będzie używany przez aplikację do zapisu do tej bazy danych. Chcemy, aby ten użytkownik miał uprawnienia do odczytu i zapisu w bazie danych:

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

Czasami chcemy również dodać użytkowników, którzy mają dostęp tylko do odczytu do bazy danych. Na przykład możemy chcieć dodać użytkownika analitycznego, który ma dostęp tylko do odczytu do bazy danych:

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

Po utworzeniu użytkowników spróbujmy połączyć się jako ten użytkownik z konsoli MongoDB:

mongo -u 'appuser' -p  <servername>/applicationdb
MongoDB shell version: 2.6.4
connecting to: <servername>/applicationdb
>

Powinno się połączyć! Zwróć uwagę, że „/applicationdb” na końcu składni mówi MongoDB, aby uwierzytelnił „appuser” w bazie danych „applicationdb”.

Dodawanie użytkownika do wielu baz danych

W wielu scenariuszach musimy utworzyć wiele baz danych na serwerze. Na przykład w tym scenariuszu może być konieczne utworzenie innej bazy danych „analyticsdb” do przechowywania wyników analiz. Użytkownik „analytics” potrzebuje teraz dostępu „tylko do odczytu” w „applicationdb” i „readWrite” w „analyticsdb”.

Jak więc to osiągnąć? Czy powinniśmy dodać „użytkownika analityki” do każdej bazy danych? Stwarza to koszmar zarządzania w dłuższej perspektywie, ponieważ dodawanych jest wielu użytkowników i bazy danych. Na szczęście istnieje proste rozwiązanie. Możemy scentralizować przypisania ról dla użytkownika i przechowywać je w jednej bazie danych. W tym scenariuszu wolę przechowywać te przypisania w bazie danych „administratora”, ponieważ jest to centrum centralnej administracji na serwerze, ale można je również przechowywać w oddzielnej bazie danych:

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

Po dodaniu możesz użyć „pokaż użytkowników”, aby wyświetlić szczegóły swoich użytkowników. Oto jak wygląda moja baza danych administratora:

use admin
> show users
{
"_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"}]
}
>

Teraz, gdy nasz użytkownik został dodany, spróbujmy połączyć się z konsoli, aby zweryfikować uwierzytelnianie, używając składni, której użyliśmy powyżej:

mongo -u 'analyticsuser' -p <pass> <servername>/applicationdb

Jednak uwierzytelnianie kończy się niepowodzeniem:

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

Powodem jest to, że „użytkownik analityki” jest zdefiniowany w bazie danych „admin”, a nie w „applicationdb”. Sposobem na określenie tego jest użycie parametru „–authenticationDatabase”.

mongo -u 'analyticsuser' -p <pass> <servername>/applicationdb --authenticationDatabase 'admin'

Tym razem logowanie powiodło się:

MongoDB shell version: 2.6.4
connecting to: <servername>/applicationdb

Aby lepiej zrozumieć różne inne wbudowane role dostępne w MongoDB, zapoznaj się z dokumentacją MongoDB dotyczącą ról wbudowanych. Jak zawsze, jeśli masz dodatkowe pytania, możesz skontaktować się z nami pod adresem [email protected].


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Zarządzanie kronikowaniem w MongoDB

  2. Relacje MongoDB:osadzanie czy odwołanie?

  3. Przewodnik po wdrożeniu i utrzymaniu MongoDB za pomocą Puppet:część 1

  4. Instalowanie MongoDB z Homebrew

  5. Natywne maskowanie MongoDB (trzecia metoda)