sql >> Databáze >  >> NoSQL >> MongoDB

Připojovací řetězec v MongoDB (s příklady)

Aby se aplikace mohly připojit k databázovému serveru, musí použít připojovací řetězec, což je výraz, který obsahuje všechny potřebné parametry. Připojovací řetězce poskytují instanci serveru, název databáze, podrobnosti ověřování a další parametry pro interakci s databázovým serverem.

Formáty pro připojovací řetězce

Každá z uvedených metod nastaví připojovací řetězec MongoDB. Formát připojení DNS Seed List nebo Standardní formát připojovacího řetězce.

Standardní formát pro připojení řetězců

Existují tři základní typy nasazení MongoDB:samostatná, sada replik a sdílený cluster, které jsou všechny popsány zde.

Toto je typický způsob připojení URI.

mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]]

Příklady:

Samostatný
mongodb://mongodb0.example.com:27017
Samostatný, který vynucuje řízení přístupu:
mongodb://myDBReader:D1fficultP%[email protected]:27017/?authSource=admin
Sada replik
mongodb://mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?replicaSet=myRepl
Sada replik, která vynucuje řízení přístupu:
mongodb://myDBReader:D1fficultP%[email protected]:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myReplicaSet=
Sharded cluster
mongodb://mongos0.example.com:27017,mongos1.example.com:27017,mongos2.example.com:27017
Sharded cluster, který vynucuje řízení přístupu:
mongodb://myDBReader:D1fficultP%[email protected]:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin

Součásti připojovacího řetězce

Komponenty standardního připojovacího řetězce URI:

  1. mongodb:// – Nezbytná předpona označující standardní připojovací řetězec.
  2. uživatelské jméno:heslo@ – Ověřovací údaje jsou volitelné. Pokud je zadán authSource, klient se pokusí ověřit uživatele. Bez zadání authSource klient ověří uživatele proti defaultauthdb. Pokud není zadáno defaultauthdb, použije se navíc databáze správce.
  3. hostitel[:port] – Hostitel (a volitelně číslo portu), na kterém běží instance mongod (nebo instance mongos v případě sdíleného clusteru). V doméně UNIX můžete uvést název hostitele, adresu IP nebo soket. Uveďte počet hostitelů požadovaných pro vaši topologii zavádění:
    V případě jedné instance mongoda uveďte název hostitele instance mongoda.
    Zadejte název hostitele zadané instance (instancí) mongoda v nastavení sady replik pro sadu replik.
    Uveďte název hostitele (názvů) instance mongos pro sdílený klastr. Bez zadání čísla portu se použije obecný port 27017.
  4. /defaultauthdb – Volitelný. Pokud připojovací řetězec obsahuje uživatelské jméno:heslo@ pověření, ale není zadána volba authSource, použije se ověřovací databáze. Klient používá administrátorskou databázi k ověření uživatele, pokud není zadán authSource i defaultauthdb.
  5. ? Volitelný. Parametry specifické pro připojení jsou specifikovány v párech name>=value> v řetězci dotazu. Seznam dostupných možností je uveden v části Možnosti připojovacího řetězce. Pokud v připojovacím řetězci není zadána žádná databáze, mezi hostitelem a otazníkem (?) musí být zahrnuto lomítko (/), aby začal řetězec voleb.

Formát připojení pro seznam výchozích DNS serverů

K dispozici je také seznam výchozích hodnot vytvořený DNS pro připojení MongoDB. Použití DNS k sestavení seznamu dostupných serverů nabízí větší flexibilitu nasazení a možnost přepínat servery v cyklech bez překonfigurování klientů.

Chcete-li použít seznam výchozích hodnot DNS, použijte předponu mongodb+srv místo běžné předpony připojovacího řetězce MongoDB. Chcete-li uživateli sdělit, že následující název hostitele je záznam DNS SRV, použijte předponu +srv. Poté se mongosh nebo ovladač dotáže systému doménových jmen (DNS), aby zjistil, kteří hostitelé provádějí instance mongodů.

Poznámka: Možnost tls (nebo odpovídající ssl) je nastavena na hodnotu true, pokud je použita proměnná připojovacího řetězce +srv. Explicitním zadáním možnosti tls na hodnotu false v řetězci dotazu můžete toto chování přepsat a místo toho použít tls=false.

Připojovací řetězce seznamu výchozích serverů DNS často vypadají jako následující příklad:

mongodb+srv://server.example.com/

Nastavení DNS může vypadat takto:

Záznam                            TTL   Třída    Port prioritní váhy  Target_mongodb._tcp.server.example.com. 86400 IN SRV   0        5      27317 mongodb1.example.com._mongodb._tcp.server.example.com. 86400 V SRV   0        5      27017 mongodb2.example.com.

Spojení se členy seedlistu poskytuje klientům přístup k adresáři ostatních členů sady replik za účelem navázání spojení. Hostitel může vytvořit seznam serverů odlišný od seznamu počátečních hodnot, protože klienti běžně používají aliasy DNS ve svých seznamech počátečních hodnot. Členové sady replik jsou přístupní pouze přes jejich názvy hostitelů; proto pokud k tomu dojde, uživatelé použijí názvy hostitelů dané replikací spíše než ty, které jsou uvedeny v seedlistu.

Poznámka: Záznamy SRV poskytnuté zadaným názvem hostitele musí mít stejnou nadřazenou doménu (example.com) jako samotný název hostitele. Pokud se nadřazené domény a názvy hostitelů neshodují, nebudete se moci připojit.

Připojovací řetězce seznamu výchozích serverů DNS vám navíc umožňují poskytovat parametry jako součást adresy URL stejným způsobem, jako to dělají běžné adresy. Můžete také použít záznam TXT k označení následujících nastavení při použití připojovacího řetězce DNS seed list:

authSourcereplicaSet

Pro každou instanci mongoda lze zadat pouze jeden záznam TXT. Klient vrátí chybu, pokud má DNS více záznamů TXT nebo pokud záznam TXT obsahuje jiný atribut než replicaSet nebo authSource.

Záznam TXT pro server.example.com by vypadal takto:

Záznam              TTL   Třída    Textserver.example.com. 86400 IN TXT   "replicaSet=mySet&authSource=authDB"

Tento připojovací řetězec je generován z položek DNS SRV a také z nastavení záznamu TXT takto:

mongodb://mongodb1.example.com:27317,mongodb2.example.com:27017/?replicaSet=mySet&authSource=authDB

Volby záznamu TXT lze přepsat zadáním parametru řetězce dotazu adresy URL. Řetězec dotazu v následujícím scénáři přepíše možnost authSource nastavenou v záznamu TXT záznamu DNS.

mongodb+srv://server.example.com/?connectTimeoutMS=300000&authSource=aDifferentAuthDB

Při použití přepsání authSource by typický připojovací řetězec vypadal takto:

mongodb://mongodb1.example.com:27317,mongodb2.example.com:27017/?connectTimeoutMS=300000&replicaSet=mySet&authSource=aDifferentAuthDB

Poznámka: Pokud k názvu hostitele zadanému v připojovacím řetězci nejsou přidruženy žádné záznamy DNS, parametr mongodb+srv se nezdaří. Poslední poznámkou je, že při použití modifikace připojovacího řetězce +srv je možnost použít TLS (nebo ekvivalentní zabezpečení SSL) pro připojení nastavena na hodnotu true. Explicitním zadáním možnosti tls na hodnotu false v řetězci dotazu můžete toto chování přepsat a místo toho použít tls=false.

Získejte svůj připojovací řetězec MongoDB

K připojení k MongoDB budete potřebovat řetězec URI. Pokud se připojíte k nasazení MongoDB pomocí mongo Shell, Compass nebo ovladačů MongoDB, budete požádáni o URI (Uniform Resource Identifier).

Předpokládá se, že jste již nastavili ověřování v MongoDB a vygenerovali uživatelské jméno a heslo pro práva čtení a zápisu do databáze MongoDB při použití poskytnutého řetězce URI.

V tomto případě můžete pro připojení k MongoDB použít přihlašovací jméno a heslo, které jste vytvořili pro roli readWriteAnyDatabase, a také název databáze správce ve vašem připojovacím řetězci.

Možnosti pro připojovací řetězec

Tato část vysvětluje různé způsoby, jak se můžete připojit k internetu.

  1. Ve formě páru název=hodnota jsou k dispozici možnosti připojení.
  2. Při použití ovladače se v názvu možnosti nerozlišují malá a velká písmena.
  3. Při použití mongoshe nebo tradičního mongo shellu (verze 4.2 nebo novější) se v názvu možnosti nerozlišují velká a malá písmena.
  4. Při použití starší verze mongo shell verze 4.0 nebo starší se v názvu možnosti rozlišují velká a malá písmena.
  5. Při zobrazování hodnoty není nikdy problém s velikostí písmen.

Písmeno ampersand (&) může oddělit volby, jako je jméno1=hodnota1&název2=hodnota2. Parametry ReplicaSet a connectTimeoutMS jsou zahrnuty v následujícím připojení:

mongodb://db1.example.net:27017,db2.example.net:2500/?replicaSet=test&connectTimeoutMS=300000

Poznámka: Ovladače nyní akceptují středníky (;) jako oddělovače možností, aby byla zachována kompatibilita se starším softwarem.

Příklady připojovacích řetězců

Příklady URI oblíbených bodů připojení naleznete v příkladech níže.

Spustit databázový server lokálně

Výchozí port místního databázového serveru lze použít k navázání připojení pomocí následujícího příkazu:

mongodb://localhost
Administrativní databáze

Chcete-li se přihlásit do administrátorské databáze jako foss s heslem fosslinux, musíte dodržovat následující příkazy:

mongodb://foss:fosslinux@localhost
Databáze záznamů

Připojení a přihlášení do databáze záznamů pomocí hesla fosslinux jako správce systému.

mongodb://foss:fosslinux@localhost/records
Doménové zásuvky v systému UNIX

Při připojování k soketu domény UNIX použijte připojovací řetězec zašifrovaný adresou URL.

MongoDB se připojuje ke koncovému bodu domény UNIX s následující cestou:

mongodb://%2Ftmp%2Fmongodb-27017.sock

Poznámka: všechny ovladače nepodporují sokety domén UNIX. Chcete-li se o svém ovladači dozvědět více, přejděte do sekce Dokumentace ovladače.

Sada replik s uživateli na odlišných počítačích

Níže je připojení k dvoučlenné sadě replik na db1.example.net a db2.example.net:

mongodb://db1.example.net,db2.example.com/?replicaSet=test

Poznámka: Instance mongodu poskytnuté v konfiguraci sady replik musí být zadány pro sadu replik.

Sada replik s uživateli na localhost

Porty 27017, 27018 a 27019 se používají k navázání připojení k sadě replik fungující na localhost:

mongodb://localhost,localhost:27018,localhost:27019/?replicaSet=test
Čtení sady replik distribuce

Připojení k tříčlenné sadě replik a distribuce čtení sekundárním členům vyžaduje metodu uvedenou níže:

mongodb://example1.com,example2.com,example3.com/?replicaSet=test&readPreference=secondary
High Level Write Concern Replika Set

Připojení k sadě replik obsahující problém se zápisem a dvousekundový časový limit při čekání na replikaci u většiny hlasujících členů nesoucích data se provádí pomocí této konfigurace:

mongodb://example1.com,example2.com,example3.com/?replicaSet=test&w=majority&wtimeoutMS=2000
Sdílený cluster

Je možné se připojit ke sdílenému clusteru s více instancemi pomocí následujícího:

mongodb://router1.example.com:27017,router2.example2.com:27017,router3.example3.com:27017/
MongoDB Atlas Cluster

Následující naváže připojení ke clusteru MongoDB Atlas pomocí přihlašovacích údajů AWS IAM pro ověření:

mongosh 'mongodb+srv://:@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS'

Tento příklad ukazuje, jak využít metodu ověřování MONGODB-AWS a $external authSource pro připojení k Atlasu prostřednictvím přihlašovacích údajů AWS IAM.

Pokud používáte token relace AWS, je nutné zadat hodnotu authMechanismProperties AWS SESSION TOKEN takto:

mongosh 'mongodb+srv://:@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN: 

Poznámka: Pokud ID přístupového klíče AWS nebo tajný přístupový klíč obsahuje některý z následujících znaků:(: / ? # [ ] @ ), musíte k jejich zakódování použít kódování procent.

K zadání těchto přihlašovacích údajů na vaší platformě můžete také použít běžné proměnné prostředí AWS IAM. Při použití ověřování MONGODB-AWS mongosh kontroluje a zjišťuje, zda jsou přítomny následující proměnné prostředí:

  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY
  • AWS_SESSION_TOKEN

Připojovací řetězec nemusí obsahovat tato pověření, pokud je nakonfigurován.

V bash shellu jsou v následujícím příkladu nastaveny následující proměnné:

export AWS_ACCESS_KEY_ID=''export AWS_SECRET_ACCESS_KEY=''export AWS_SESSION_TOKEN=''

Syntaxe pro vytvoření proměnných prostředí se bude v jiných shellech lišit, takže si to uvědomte. Další informace najdete v dokumentaci k vaší platformě.

Následující příkaz potvrdí, zda byly nebo nebyly nastaveny určité proměnné prostředí:

env | grep AWS

Následující kód ukazuje, jak vytvořit připojení ke clusteru MongoDB Atlas pomocí proměnných uvedených níže:

mongosh 'mongodb+srv://cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS'

To je vše, co potřebujete vědět o připojovacích řetězcích v MongoDB. Doufáme, že vám průvodce článkem pomohl. Pokud ano, zanechte prosím poznámku v sekci komentářů. Děkuji za přečtení.


  1. Mongodb Query Výběr záznamů s daným klíčem

  2. Jak zvýšit pole v mongodb?

  3. Kontrola připojení k MongoDB

  4. MongoError:Parametr filtru musí být objekt