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

Łączenie się z bazami danych MongoDB


Wprowadzenie

Gdy masz już dostępny serwer MongoDB, jedną z pierwszych i najczęstszych czynności, które musisz wykonać, jest połączenie z rzeczywistą bazą danych. Wymaga to koordynacji, aby upewnić się, że baza danych jest skonfigurowana w sposób umożliwiający klientowi łączenie się i uwierzytelnianie.

Oznacza to, że musisz zrozumieć, jak połączyć się z bazą danych MongoDB, podając lokalizację serwera, parametry połączenia i prawidłowe poświadczenia. W tym przewodniku skupimy się na tym, jak połączyć się z bazą danych po stronie klienta za pomocą mongo Klient powłoki MongoDB, zaprojektowany głównie do interaktywnych sesji z bazami danych.

W towarzyszącym przewodniku dowiesz się, jak skonfigurować ustawienia uwierzytelniania MongoDB, aby odpowiadały Twoim wymaganiom. Rozważ przeczytanie obu części, aby uzyskać pełny obraz implementacji uwierzytelniania z perspektywy obu stron.



Podstawowe informacje o mongo klient

mongo client to klient JavaScript wiersza poleceń do łączenia się, kontrolowania i interakcji z serwerami baz danych MongoDB. Pod wieloma względami jest to najprostszy sposób na połączenie się z bazą danych MongoDB i rozpoczęcie korzystania z niej, ponieważ jest ona zawarta w instalacji MongoDB i dostępna na wszystkich popularnych platformach. mongo klient jest szczególnie przydatny do wykonywania wstępnej konfiguracji i do sesji interaktywnych, w których chcesz eksplorować swoje dane lub iterować zapytania na podstawie wstępnych wyników.

Sposób, w jaki łączysz się z mongo powłoka zależy od konfiguracji serwera MongoDB i dostępnych opcji uwierzytelniania na koncie. W kolejnych sekcjach omówimy niektóre z podstawowych opcji połączenia. Dla jasności rozróżnimy połączenia lokalne i zdalne:

  • połączenie lokalne :połączenie, w którym klient i instancja MongoDB znajdują się na tym samym serwerze
  • połączenie zdalne :gdzie klient łączy się z dostępną przez sieć instancją MongoDB uruchomioną na innym komputerze

Zacznijmy od połączenia z bazą danych z tego samego komputera.



Łączenie z lokalną bazą danych za pomocą mongo

Bez żadnych argumentów mongo polecenie próbuje połączyć się z lokalną instancją MongoDB.

W tym celu próbuje połączyć się z portem 27017 na lokalnym adresie pętli zwrotnej:127.0.0.1:27017 . Jest to jeden z interfejsów, z którymi łączą się serwery MongoDB w ich domyślnej konfiguracji (MongoDB może być również dostępny za pośrednictwem lokalnego pliku typu socket).

Możesz połączyć się z lokalnym serwerem MongoDB działającym z domyślną konfiguracją, wpisując:

mongo

W przypadku pomyślnego połączenia prawdopodobnie zobaczysz dość długi zestaw komunikatów, po których następuje znak zachęty powłoki MongoDB:

 MongoDB shell version v4.4.6 connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb Implicit session: session { "id" : UUID("9cf2d126-d25f-4ed8-b159-ef3bba4fcc53") } MongoDB server version: 4.4.6 --- The server generated these startup warnings when booting:         2021-06-04T12:26:53.374+00:00: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine. See http://dochub.mongodb.org/core/prodnotes-filesystem         2021-06-04T12:26:54.562+00:00: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted --- ---         Enable MongoDB's free cloud-based monitoring service, which will then receive and display         metrics about your deployment (disk utilization, CPU, operation statistics, etc).          The monitoring data will be available on a MongoDB website with a unique URL accessible to you         and anyone you share the URL with. MongoDB may use this information to make product         improvements and to suggest MongoDB products and deployment options to you.          To enable free monitoring, run the following command: db.enableFreeMonitoring()         To permanently disable this reminder, run the following command: db.disableFreeMonitoring() --- >

Dane wyjściowe pokazują logi generowane przez mongo polecenia podczas nawiązywania połączenia, a następnie kilka ostrzeżeń generowanych przez serwer MongoDB podczas uruchamiania. Na koniec znajduje się informacja o usłudze monitorowania MongoDB, którą możesz wykorzystać lub wyłączyć.

Jedno z ostrzeżeń z serwera MongoDB wskazuje, że kontrola dostępu nie jest obecnie włączona. To jest powód, dla którego udało nam się połączyć bez podawania danych uwierzytelniających lub innych szczegółów uwierzytelniających.

Jeśli łączysz się z lokalnym serwerem MongoDB, który ma został skonfigurowany z kontrolą dostępu, będziesz musiał podać dodatkowe informacje, aby się połączyć. Musisz podać co najmniej nazwę użytkownika i hasło, aby połączyć się przy użyciu powiązanego --username i --password opcje:

mongo --username <mongo_username> --password

Umieszczanie --password Opcja na końcu i niepodanie hasła w wierszu wskazuje, że chcesz, aby MongoDB zamiast tego monitował o hasło. Jest to bezpieczniejsze niż podanie hasła w samym poleceniu, ponieważ może ono być widoczne lub możliwe do odzyskania dzięki historii powłoki, listom procesów i innym mechanizmom.

Serwer MongoDB zapyta o hasło użytkownika przed połączeniem z bazą danych:

MongoDB shell version v.4.4.6Enter password:

Po pomyślnym uwierzytelnieniu powinieneś być połączony z bazą danych i móc normalnie kontynuować sesję.

Możesz również podać te informacje, przekazując ciąg połączenia zamiast używania --username i --password opcje:

mongo "mongodb://<mongo_username>:@127.0.0.1"

Ponieważ wskazaliśmy, że użytkownik ma hasło z <username>: składni, ale jej nie podałeś, mongo shell zapyta o hasło.

Alternatywnie możesz również uwierzytelnić się po połączeniu z normalnym mongo polecenie za pomocą db.auth polecenie.

Najpierw połącz się z bazą danych MongoDB bez podawania danych logowania:

mongo

Otrzymasz wiersz polecenia, jak zwykle, ale jeśli kontrola dostępu jest włączona, nie będziesz mieć uprawnień do wykonywania wielu czynności, dopóki się nie uwierzytelnisz. Na przykład show dbs Polecenie prawdopodobnie będzie puste, ponieważ nie masz dostępu do wyszukiwania dostępnych baz danych:

show dbs

Aby dokonać uwierzytelnienia, najpierw wybierz bazę danych, w której zdefiniowany jest twój użytkownik. Najczęściej będzie to admin baza danych:

use admin

Następnie użyj db.auth() aby podać swoją nazwę użytkownika i poprosić o hasło:

db.auth({user: "<mongo_username>", passwordPrompt()})

Zostaniesz poproszony o podanie hasła do konta użytkownika, jak poprzednio:

Enter password:

Jeśli ci się powiedzie, serwer wypisze 1 :

Enter password:1

Będziesz mieć teraz regularny dostęp użytkownika, którego uwierzytelniłeś jako:

show dbs
admin   0.000GBconfig  0.000GBlocal   0.000GB

Listę uwierzytelnionych użytkowników i ról powiązanych z bieżącym połączeniem możesz wyświetlić w dowolnym momencie, wpisując:

db.runCommand("connectionStatus")
{        "authInfo" : {                "authenticatedUsers" : [                        {                                "user" : "root",                                "db" : "admin"                        }                ],                "authenticatedUserRoles" : [                        {                                "role" : "userAdminAnyDatabase",                                "db" : "admin"                        },                        {                                "role" : "readWriteAnyDatabase",                                "db" : "admin"                        }                ]        },        "ok" : 1}


Łączenie ze zdalną bazą danych

Jeśli chcesz połączyć się ze zdalną bazą danych MongoDB, będziesz musiał podać kilka dodatkowych szczegółów podczas korzystania z mongo powłoka.

W szczególności musisz dołączyć --host i potencjalnie --port opcja również, jeśli serwer MongoDB nasłuchuje na porcie innym niż domyślny. W prawie wszystkich przypadkach musisz także podać --user i --password opcje uwierzytelniania na zdalnym serwerze.

Podstawowa struktura polecenia podczas łączenia się ze zdalną bazą danych MongoDB wygląda więc mniej więcej tak:

mongo --host <mongo_server_address> --port <mongo_server_port> --user <mongo_username> --password

Jak wspomniano w sekcji dotyczącej łączenia się z lokalną bazą danych, umieszczenie --password opcja na końcu i niepodanie hasła w linii oznacza, że ​​chcesz mongo powłoki, aby zamiast tego zapytać o hasło. Jest to bezpieczniejsze niż podanie hasła w samym poleceniu, ponieważ może ono być widoczne lub możliwe do odzyskania dzięki historii powłoki, listom procesów i innym mechanizmom.

Serwer MongoDB zapyta o hasło użytkownika przed połączeniem z bazą danych:

MongoDB shell version v.4.4.6Enter password:

Po pomyślnym uwierzytelnieniu powinieneś być połączony z bazą danych i móc normalnie kontynuować sesję.

Możesz również podać te informacje, przekazując ciąg połączenia zamiast używania --host , --port , --username i --password opcje:

mongo "mongodb://<mongo_username>:@<mongo_server_address>:<mongo_server_port>"

Ponieważ wskazaliśmy, że użytkownik ma hasło z <username>: składni, ale jej nie podałeś, mongo shell zapyta o hasło.



Dostosowywanie konfiguracji uwierzytelniania serwera MongoDB

Jeśli chcesz zmodyfikować reguły określające sposób uwierzytelniania użytkowników w Twoich instancjach MongoDB, możesz to zrobić, modyfikując konfigurację serwera. W tym artykule dowiesz się, jak zmodyfikować konfigurację uwierzytelniania MongoDB.



Wniosek

W tym przewodniku omówiliśmy uwierzytelnianie MongoDB od strony klienta. Pokazaliśmy, jak używać mongo powłoki do łączenia się z lokalnymi i zdalnymi instancjami baz danych przy użyciu różnych metod.

Wiedza o tym, jak łączyć się z różnymi instancjami MongoDB, jest niezbędna, gdy zaczynasz pracę z systemem bazy danych. Możesz uruchomić lokalną instancję MongoDB na potrzeby programowania, która nie wymaga żadnego specjalnego uwierzytelniania, ale Twoje bazy danych w fazie tymczasowej i produkcyjnej prawie na pewno będą wymagały uwierzytelniania. Możliwość uwierzytelnienia w obu przypadkach pozwoli Ci dobrze pracować w różnych środowiskach.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. policz wystąpienia tablicy we wszystkich dokumentach za pomocą mongo

  2. Utwórz kopię zapasową bazy danych MongoDB za pomocą mongodump

  3. Czy jest jakaś opcja ograniczenia użycia pamięci mongodb?

  4. Przechowuj datę w MongoDB bez uwzględniania strefy czasowej

  5. Aktualizacja MongoDB z warunkiem