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.