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:27017Sharded cluster, který vynucuje řízení přístupu:
mongodb://myDBReader:D1fficultP%[email protected]:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=adminSoučásti připojovacího řetězce
Komponenty standardního připojovacího řetězce URI:
- mongodb:// – Nezbytná předpona označující standardní připojovací řetězec.
- 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.
- 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.- /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.
- ?
– 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:
authSourcereplicaSetPro 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=authDBVolby 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=aDifferentAuthDBPř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=aDifferentAuthDBPozná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.
- Ve formě páru název=hodnota jsou k dispozici možnosti připojení.
- Při použití ovladače se v názvu možnosti nerozlišují malá a velká písmena.
- 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.
- 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.
- 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=300000Pozná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://localhostAdministrativní 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@localhostDatabá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/recordsDomé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.sockPozná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=testPozná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=secondaryHigh 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=2000Sdí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_TOKENPř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 AWSNá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í.