sql >> Databasteknik >  >> NoSQL >> MongoDB

Ansluter till MongoDB-databaser


Introduktion

När du väl har en MongoDB-server tillgänglig är en av de första och vanligaste åtgärderna du behöver göra att ansluta till den faktiska databasen. Detta kräver samordning för att säkerställa att databasen är konfigurerad på ett sätt som gör att din klient kan ansluta och autentisera.

Det betyder att du måste förstå hur du ansluter till din MongoDB-databas genom att tillhandahålla serverplatsen, anslutningsparametrarna och korrekta referenser. I den här guiden kommer vi att fokusera på hur du ansluter till databasen från klientsidan med hjälp av mongo MongoDB-skalklient, designad huvudsakligen för interaktiva sessioner med dina databaser.

I en medföljande guide kan du ta reda på hur du konfigurerar MongoDB:s autentiseringsinställningar för att matcha dina krav. Överväg att läsa båda delarna för en fullständig bild av hur autentisering implementeras ur båda parters perspektiv.



Grundläggande information om mongo klient

mongo klient är en kommandorads JavaScript-klient för att ansluta till, kontrollera och interagera med MongoDB-databasservrar. På många sätt är det det enklaste sättet att ansluta till och börja använda din MongoDB-databas eftersom den ingår i MongoDB-installationen och tillgänglig på alla populära plattformar. mongo klienten är särskilt användbar för att utföra initial konfiguration och för interaktiva sessioner där du vill utforska dina data eller iterera på frågor baserat på preliminära resultat.

Sättet som du ansluter till mongo skalet beror på konfigurationen av MongoDB-servern och de alternativ som är tillgängliga för dig att autentisera till ett konto. I följande avsnitt kommer vi att gå över några av de grundläggande anslutningsalternativen. För tydlighetens skull kommer vi att skilja mellan lokala och fjärranslutna anslutningar:

  • lokal anslutning :en anslutning där klienten och MongoDB-instansen finns på samma server
  • fjärranslutning :där klienten ansluter till en nätverkstillgänglig MongoDB-instans som körs på en annan dator

Låt oss börja med att ansluta till en databas från samma dator.



Ansluter till en lokal databas med mongo

Utan några argument, mongo kommandot försöker ansluta till en lokal MongoDB-instans.

För att göra detta försöker den ansluta till port 27017 på den lokala loopback-adressen:127.0.0.1:27017 . Detta är ett av gränssnitten som MongoDB-servrar binder till i sin standardkonfiguration (MongoDB kan också vara tillgänglig via en lokal socket-fil).

Du kan ansluta till en lokal MongoDB-server som körs med dess standardkonfiguration genom att skriva:

mongo

Vid en lyckad anslutning kommer du sannolikt att se en ganska lång uppsättning meddelanden följt av en MongoDB-skalprompt:

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

Utdata visar loggar genererade av mongo kommando medan anslutningen upprättas, följt av några varningar som genereras av MongoDB-servern vid uppstart. Slutligen finns det ett meddelande om en MongoDB-övervakningstjänst som du kan välja att dra nytta av eller inaktivera.

En av varningarna från MongoDB-servern indikerar att åtkomstkontroll inte är aktiverad för närvarande. Detta är anledningen till att vi kunde ansluta utan att tillhandahålla autentiseringsuppgifter eller andra autentiseringsdetaljer.

Om du ansluter till en lokal MongoDB-server som har har konfigurerats med åtkomstkontroll måste du ange ytterligare information för att ansluta. Du måste ange minst ett användarnamn och lösenord för att ansluta med den associerade --username och --password alternativ:

mongo --username <mongo_username> --password

Placera --password alternativet i slutet och att inte ange lösenordet inline indikerar att du vill att MongoDB ska fråga efter ett lösenord istället. Detta är säkrare än att ange ett lösenord i själva kommandot eftersom det kan vara synligt eller återställbart genom skalhistorik, processlistor och andra mekanismer.

MongoDB-servern kommer att fråga dig om användarens lösenord innan du ansluter till databasen:

MongoDB shell version v.4.4.6Enter password:

Efter framgångsrik autentisering bör du vara ansluten till databasen och kunna fortsätta din session som vanligt.

Du kan också tillhandahålla denna information genom att skicka en anslutningssträng istället för att använda --username och --password alternativ:

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

Eftersom vi har angett att användaren har ett lösenord med <username>: syntax, men har inte tillhandahållit någon, mongo shell kommer att fråga efter lösenordet.

Alternativt kan du också autentisera efter att ha anslutit med den vanliga mongo kommandot genom att använda db.auth kommando.

Anslut först till MongoDB-databasen utan att ange referenser:

mongo

Du kommer att få en kommandotolk som vanligt, men om åtkomstkontroll är aktiverad kommer du inte att ha behörighet att utföra många åtgärder förrän du autentiserat. Till exempel, show dbs kommandot kommer sannolikt att vara tomt eftersom du inte har tillgång till att fråga de tillgängliga databaserna:

show dbs

För att autentisera, välj först den databas som din användare är definierad i. Oftast är det admin databas:

use admin

Använd sedan db.auth() för att ange ditt användarnamn och begära ett lösenord:

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

Du kommer att bli ombedd att ange användarkontots lösenord som tidigare:

Enter password:

Om du lyckas kommer servern att mata ut 1 :

Enter password:1

Du kommer nu att ha den vanliga åtkomsten för användaren som du autentiserade som:

show dbs
admin   0.000GBconfig  0.000GBlocal   0.000GB

Du kan se listan över autentiserade användare och roller som är associerade med den aktuella anslutningen när som helst genom att skriva:

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


Ansluta till en fjärrdatabas

Om du vill ansluta till en fjärransluten MongoDB-databas måste du ange ytterligare information när du använder mongo skal.

Specifikt måste du inkludera --host alternativet och eventuellt --port alternativet också om MongoDB-servern lyssnar på en icke-standardport. I nästan alla fall måste du också ange --user och --password alternativ för att autentisera till fjärrservern också.

Den grundläggande strukturen för kommandot när du ansluter till en fjärransluten MongoDB-databas ser därför ut ungefär så här:

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

Som nämnts i avsnittet om att ansluta till en lokal databas, placera --password alternativet i slutet och att inte ange lösenordet inline indikerar att du vill ha mongo skal för att fråga efter ett lösenord istället. Detta är säkrare än att ange ett lösenord i själva kommandot eftersom det kan vara synligt eller återställbart genom skalhistorik, processlistor och andra mekanismer.

MongoDB-servern kommer att fråga dig om användarens lösenord innan du ansluter till databasen:

MongoDB shell version v.4.4.6Enter password:

Efter framgångsrik autentisering bör du vara ansluten till databasen och kunna fortsätta din session som vanligt.

Du kan också tillhandahålla denna information genom att skicka en anslutningssträng istället för att använda --host , --port , --username och --password alternativ:

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

Eftersom vi har angett att användaren har ett lösenord med <username>: syntax, men har inte tillhandahållit någon, mongo shell kommer att fråga efter lösenordet.



Justera en MongoDB-servers autentiseringskonfiguration

Om du vill ändra reglerna som dikterar hur användare kan autentisera till dina MongoDB-instanser, kan du göra det genom att ändra din servers konfiguration. Du kan ta reda på hur du ändrar MongoDB:s autentiseringskonfiguration i den här artikeln.



Slutsats

I den här guiden täckte vi MongoDB-autentisering från klientsidan. Vi visade hur man använder mongo skal för att ansluta till både lokala och fjärrbaserade databasinstanser med en mängd olika metoder.

Att veta hur man ansluter till olika MongoDB-instanser är viktigt när du börjar arbeta med databassystemet. Du kan köra en lokal MongoDB-instans för utveckling som inte behöver någon speciell autentisering, men dina databaser i iscensättning och produktion kommer nästan säkert att kräva autentisering. Att kunna autentisera i båda fallen gör att du kan arbeta bra i olika miljöer.




  1. MongoDB lägg till anslutningsfältet från bas ett

  2. Automatisk ökningssekvens i mongodb med java

  3. Är Redis list eller set pop metod tråd säker?

  4. Mongo konverterar inbäddade dokument till array