sql >> Database teknologi >  >> NoSQL >> MongoDB

Tilslutning til MongoDB-databaser


Introduktion

Når du har en MongoDB-server tilgængelig, er en af ​​de første og mest almindelige handlinger, du skal tage, at oprette forbindelse til den faktiske database. Dette kræver koordinering for at sikre, at databasen er konfigureret på en måde, der gør det muligt for din klient at oprette forbindelse og autentificere.

Dette betyder, at du bliver nødt til at forstå, hvordan du opretter forbindelse til din MongoDB-database ved at angive serverplaceringen, forbindelsesparametrene og de korrekte legitimationsoplysninger. I denne vejledning vil vi fokusere på, hvordan du forbinder til databasen fra klientsiden ved hjælp af mongo MongoDB shell-klient, designet primært til interaktive sessioner med dine databaser.

I en ledsagende guide kan du finde ud af, hvordan du konfigurerer MongoDBs godkendelsesindstillinger, så de matcher dine krav. Overvej at læse begge dele for at få et komplet billede af, hvordan autentificering implementeres fra begge parters perspektiv.



Grundlæggende oplysninger om mongo klient

mongo klient er en kommandolinje JavaScript-klient til at oprette forbindelse til, kontrollere og interagere med MongoDB-databaseservere. På mange måder er det den enkleste måde at oprette forbindelse til og begynde at bruge din MongoDB-database på, fordi den er inkluderet i MongoDB-installationen og tilgængelig på alle populære platforme. mongo klient er især nyttig til at udføre indledende konfiguration og til interaktive sessioner, hvor du vil udforske dine data eller gentage forespørgsler baseret på foreløbige resultater.

Måden du forbinder med mongo shell afhænger af konfigurationen af ​​MongoDB-serveren og de tilgængelige muligheder for at godkende en konto. I de følgende afsnit gennemgår vi nogle af de grundlæggende tilslutningsmuligheder. For klarhedens skyld skelner vi mellem lokale og fjernforbindelser:

  • lokal forbindelse :en forbindelse, hvor klienten og MongoDB-instansen er placeret på den samme server
  • fjernforbindelse :hvor klienten opretter forbindelse til en netværkstilgængelig MongoDB-instans, der kører på en anden computer

Lad os starte med at oprette forbindelse til en database fra den samme computer.



Opretter forbindelse til en lokal database med mongo

Uden nogen argumenter, mongo kommandoen forsøger at oprette forbindelse til en lokal MongoDB-instans.

For at gøre dette forsøger den at oprette forbindelse til port 27017 på den lokale loopback-adresse:127.0.0.1:27017 . Dette er en af ​​de grænseflader, som MongoDB-servere binder til i deres standardkonfiguration (MongoDB kan også være tilgængelig via en lokal socket-fil).

Du kan oprette forbindelse til en lokal MongoDB-server, der kører med dens standardkonfiguration ved at skrive:

mongo

Ved en vellykket forbindelse vil du sandsynligvis se et ret langt sæt meddelelser efterfulgt af en MongoDB shell-prompt:

 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() --- >

Outputtet viser logfiler genereret af mongo kommando, mens du etablerer forbindelsen, efterfulgt af nogle advarsler genereret af MongoDB-serveren ved opstart. Endelig er der en meddelelse om en MongoDB-overvågningstjeneste, som du kan vælge at drage fordel af eller deaktivere.

En af advarslerne fra MongoDB-serveren indikerer, at adgangskontrol ikke er aktiveret i øjeblikket. Dette er grunden til, at vi var i stand til at oprette forbindelse uden at angive legitimationsoplysninger eller andre godkendelsesdetaljer.

Hvis du opretter forbindelse til en lokal MongoDB-server, der har er konfigureret med adgangskontrol, skal du angive yderligere oplysninger for at oprette forbindelse. Du skal som minimum angive et brugernavn og en adgangskode for at oprette forbindelse ved hjælp af den tilknyttede --username og --password muligheder:

mongo --username <mongo_username> --password

Placering af --password mulighed i slutningen og ikke at angive adgangskoden inline indikerer, at du vil have MongoDB til at bede om en adgangskode i stedet. Dette er mere sikkert end at angive et kodeord i selve kommandoen, da det kan være synligt eller gendannes gennem shell-historik, proceslister og andre mekanismer.

MongoDB-serveren vil bede dig om brugerens adgangskode, før der oprettes forbindelse til databasen:

MongoDB shell version v.4.4.6Enter password:

Når godkendelsen er gennemført, bør du være forbundet til databasen og kunne fortsætte din session som normalt.

Du kan også give disse oplysninger ved at sende en forbindelsesstreng i stedet for at bruge --username og --password muligheder:

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

Da vi har angivet, at brugeren har en adgangskode med <username>: syntaks, men har ikke leveret en, mongo shell vil bede om adgangskoden.

Alternativt kan du også godkende efter at have oprettet forbindelse med den normale mongo kommandoen ved at bruge db.auth kommando.

Først skal du oprette forbindelse til MongoDB-databasen uden at angive legitimationsoplysninger:

mongo

Du vil blive givet en kommandoprompt som normalt, men hvis adgangskontrol er aktiveret, vil du ikke have tilladelse til at udføre mange handlinger, før du godkender. For eksempel, show dbs kommandoen vil sandsynligvis være tom, da du ikke har adgang til at forespørge på de tilgængelige databaser:

show dbs

For at godkende skal du først vælge den database, som din bruger er defineret i. Oftest vil det være admin database:

use admin

Brug derefter db.auth() for at angive dit brugernavn og anmode om en adgangskodeprompt:

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

Du vil blive bedt om brugerkontoens adgangskode som før:

Enter password:

Hvis det lykkes, vil serveren udsende 1 :

Enter password:1

Du vil nu have den almindelige adgang for den bruger, du har godkendt som:

show dbs
admin   0.000GBconfig  0.000GBlocal   0.000GB

Du kan til enhver tid se listen over godkendte brugere og roller forbundet med den aktuelle forbindelse ved at skrive:

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


Opretter forbindelse til en fjerndatabase

Hvis du vil oprette forbindelse til en ekstern MongoDB-database, skal du angive nogle yderligere detaljer, når du bruger mongo skal.

Specifikt skal du inkludere --host mulighed og potentielt --port mulighed også, hvis MongoDB-serveren lytter på en ikke-standardport. I næsten alle tilfælde skal du også angive --user og --password muligheder for at godkende til fjernserveren også.

Den grundlæggende struktur af kommandoen, når der oprettes forbindelse til en ekstern MongoDB-database, ser derfor nogenlunde sådan ud:

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

Som nævnt i afsnittet om at oprette forbindelse til en lokal database, placere --password mulighed i slutningen og ikke at angive adgangskoden inline indikerer, at du vil have mongo shell for at bede om en adgangskode i stedet for. Dette er mere sikkert end at angive et kodeord i selve kommandoen, da det kan være synligt eller gendannes gennem shell-historik, proceslister og andre mekanismer.

MongoDB-serveren vil bede dig om brugerens adgangskode, før der oprettes forbindelse til databasen:

MongoDB shell version v.4.4.6Enter password:

Når godkendelsen er gennemført, bør du være forbundet til databasen og kunne fortsætte din session som normalt.

Du kan også give disse oplysninger ved at sende en forbindelsesstreng i stedet for at bruge --host , --port , --username og --password muligheder:

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

Da vi har angivet, at brugeren har en adgangskode med <username>: syntaks, men har ikke leveret en, mongo shell vil bede om adgangskoden.



Justering af en MongoDB-servers godkendelseskonfiguration

Hvis du ønsker at ændre reglerne, der dikterer, hvordan brugere kan godkende til dine MongoDB-instanser, kan du gøre det ved at ændre din servers konfiguration. Du kan finde ud af, hvordan du ændrer MongoDB's godkendelseskonfiguration i denne artikel.



Konklusion

I denne guide dækkede vi MongoDB-godkendelse fra klientsiden. Vi demonstrerede, hvordan man bruger mongo shell for at oprette forbindelse til både lokale og eksterne databaseinstanser ved hjælp af en række forskellige metoder.

Det er vigtigt at vide, hvordan man forbinder til forskellige MongoDB-instanser, når du begynder at arbejde med databasesystemet. Du kan køre en lokal MongoDB-instans til udvikling, der ikke kræver nogen særlig godkendelse, men dine databaser i iscenesættelse og produktion vil næsten helt sikkert kræve godkendelse. At være i stand til at godkende i begge tilfælde vil give dig mulighed for at arbejde godt i forskellige miljøer.




  1. Ændring af Redis-port i Docker Compose virker ikke

  2. Midlertidig fejl i navneopløsning redis

  3. Få alle felter og værdier af hash-nøgle ved hjælp af redis i node

  4. Redis kø med krav udløber