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.