MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

MongoDB डेटाबेस से कनेक्ट करना


परिचय

एक बार जब आपके पास एक MongoDB सर्वर उपलब्ध हो जाता है, तो वास्तविक डेटाबेस से कनेक्ट करने के लिए आपको सबसे पहले और सबसे सामान्य क्रियाओं में से एक की आवश्यकता होगी। यह सुनिश्चित करने के लिए समन्वय की आवश्यकता है कि डेटाबेस इस तरह से कॉन्फ़िगर किया गया है जो आपके क्लाइंट को कनेक्ट और प्रमाणित करने की अनुमति देता है।

इसका मतलब है कि आपको सर्वर स्थान, कनेक्शन पैरामीटर और सही क्रेडेंशियल प्रदान करके अपने MongoDB डेटाबेस से कनेक्ट करने का तरीका समझने की आवश्यकता होगी। इस गाइड में, हम mongo का उपयोग करके क्लाइंट साइड से डेटाबेस से कनेक्ट करने के तरीके पर ध्यान देंगे। MongoDB शेल क्लाइंट, मुख्य रूप से आपके डेटाबेस के साथ संवादात्मक सत्रों के लिए डिज़ाइन किया गया है।

एक साथी गाइड में, आप पता लगा सकते हैं कि अपनी आवश्यकताओं से मेल खाने के लिए MongoDB की प्रमाणीकरण सेटिंग्स को कैसे कॉन्फ़िगर किया जाए। दोनों पक्षों के दृष्टिकोण से प्रमाणीकरण कैसे लागू किया जाता है, इसकी पूरी तस्वीर के लिए दोनों अंशों को पढ़ने पर विचार करें।



mongo के बारे में बुनियादी जानकारी ग्राहक

mongo क्लाइंट MongoDB डेटाबेस सर्वर से कनेक्ट करने, नियंत्रित करने और इंटरैक्ट करने के लिए एक कमांड लाइन जावास्क्रिप्ट क्लाइंट है। कई मायनों में, यह अपने MongoDB डेटाबेस से जुड़ने और उसका उपयोग शुरू करने का सबसे सरल तरीका है क्योंकि यह MongoDB स्थापना में शामिल है और सभी लोकप्रिय प्लेटफार्मों पर उपलब्ध है। mongo क्लाइंट विशेष रूप से प्रारंभिक कॉन्फ़िगरेशन करने के लिए और इंटरैक्टिव सत्रों के लिए उपयोगी है जहां आप अपने डेटा को एक्सप्लोर करना चाहते हैं या प्रारंभिक परिणामों के आधार पर प्रश्नों पर पुनरावृति करना चाहते हैं।

जिस तरह से आप mongo . से जुड़ते हैं शेल MongoDB सर्वर के कॉन्फ़िगरेशन और किसी खाते को प्रमाणित करने के लिए आपके लिए उपलब्ध विकल्पों पर निर्भर करता है। निम्नलिखित अनुभागों में, हम कुछ बुनियादी कनेक्शन विकल्पों के बारे में जानेंगे। स्पष्टता के लिए, हम स्थानीय और दूरस्थ कनेक्शन के बीच अंतर करेंगे:

  • स्थानीय कनेक्शन :एक कनेक्शन जहां क्लाइंट और MongoDB इंस्टेंस एक ही सर्वर पर स्थित होते हैं
  • दूरस्थ कनेक्शन :जहां क्लाइंट एक अलग कंप्यूटर पर चल रहे नेटवर्क-सुलभ MongoDB इंस्टेंस से कनेक्ट हो रहा है

आइए एक ही कंप्यूटर से डेटाबेस से कनेक्ट करना शुरू करें।



mongo के साथ स्थानीय डेटाबेस से कनेक्ट करना

बिना किसी तर्क के, mongo कमांड स्थानीय MongoDB उदाहरण से कनेक्ट करने का प्रयास करता है।

ऐसा करने के लिए, यह स्थानीय लूपबैक पते पर पोर्ट 27017 से कनेक्ट करने का प्रयास करता है:127.0.0.1:27017 . यह उन इंटरफेस में से एक है जिसे MongoDB सर्वर अपने डिफ़ॉल्ट कॉन्फ़िगरेशन में बाँधते हैं (MongoDB स्थानीय सॉकेट फ़ाइल के माध्यम से भी पहुँचा जा सकता है)।

आप टाइप करके अपने डिफ़ॉल्ट कॉन्फ़िगरेशन के साथ चल रहे स्थानीय MongoDB सर्वर से जुड़ सकते हैं:

mongo

एक सफल कनेक्शन पर, आपको मोंगोडीबी शेल प्रॉम्प्ट के बाद संदेशों का एक काफी लंबा सेट दिखाई देगा:

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

आउटपुट mongo . द्वारा उत्पन्न लॉग दिखाता है कनेक्शन स्थापित करते समय कमांड, स्टार्टअप पर MongoDB सर्वर द्वारा उत्पन्न कुछ चेतावनियों के बाद। अंत में, एक MongoDB निगरानी सेवा के बारे में एक सूचना है जिसका आप लाभ उठाना या अक्षम करना चुन सकते हैं।

MongoDB सर्वर की चेतावनियों में से एक इंगित करता है कि वर्तमान में अभिगम नियंत्रण सक्षम नहीं है। यही कारण है कि हम क्रेडेंशियल या अन्य प्रमाणीकरण विवरण प्रदान किए बिना कनेक्ट करने में सक्षम थे।

यदि आप किसी स्थानीय MongoDB सर्वर से कनेक्ट कर रहे हैं जिसमें है एक्सेस कंट्रोल के साथ कॉन्फ़िगर किया गया है, आपको कनेक्ट करने के लिए अतिरिक्त जानकारी प्रदान करने की आवश्यकता होगी। संबंधित --username . का उपयोग करके कनेक्ट करने के लिए आपको कम से कम एक उपयोगकर्ता नाम और पासवर्ड प्रदान करने की आवश्यकता होगी और --password विकल्प:

mongo --username <mongo_username> --password

--password डालना अंत में विकल्प और पासवर्ड इनलाइन प्रदान नहीं करना इंगित करता है कि आप चाहते हैं कि MongoDB इसके बजाय पासवर्ड के लिए संकेत दे। यह कमांड में पासवर्ड प्रदान करने की तुलना में अधिक सुरक्षित है क्योंकि यह शेल इतिहास, प्रक्रिया सूचियों और अन्य तंत्रों के माध्यम से दृश्यमान या पुनर्प्राप्त करने योग्य हो सकता है।

डेटाबेस से जुड़ने से पहले MongoDB सर्वर आपको उपयोगकर्ता के पासवर्ड के लिए संकेत देगा:

MongoDB shell version v.4.4.6Enter password:

सफलतापूर्वक प्रमाणित होने पर, आपको डेटाबेस से कनेक्ट होना चाहिए और अपना सत्र सामान्य रूप से जारी रखने में सक्षम होना चाहिए।

आप --username . का उपयोग करने के बजाय एक कनेक्शन स्ट्रिंग पास करके भी यह जानकारी प्रदान कर सकते हैं और --password विकल्प:

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

चूंकि हमने संकेत दिया है कि उपयोगकर्ता के पास <username>: . के साथ एक पासवर्ड है सिंटैक्स, लेकिन एक प्रदान नहीं किया है, mongo शेल पासवर्ड के लिए संकेत देगा।

वैकल्पिक रूप से, आप सामान्य mongo . से जुड़ने के बाद भी प्रमाणित कर सकते हैं db.auth . का उपयोग करके कमांड करें आदेश।

सबसे पहले, क्रेडेंशियल प्रदान किए बिना MongoDB डेटाबेस से कनेक्ट करें:

mongo

आपको हमेशा की तरह एक कमांड प्रॉम्प्ट दिया जाएगा, लेकिन अगर एक्सेस कंट्रोल सक्षम है, तो आपके पास प्रमाणित होने तक कई क्रियाएं करने की अनुमति नहीं होगी। उदाहरण के लिए, show dbs कमांड खाली होने की संभावना है क्योंकि आपके पास उपलब्ध डेटाबेस को क्वेरी करने की पहुंच नहीं है:

show dbs

प्रमाणित करने के लिए, पहले, उस डेटाबेस का चयन करें जिसमें आपका उपयोगकर्ता परिभाषित है। अक्सर, वह admin होगा। डेटाबेस:

use admin

बाद में, db.auth() use का प्रयोग करें अपना उपयोगकर्ता नाम प्रदान करने और पासवर्ड संकेत का अनुरोध करने के लिए:

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

आपको पहले की तरह उपयोगकर्ता खाते के पासवर्ड के लिए कहा जाएगा:

Enter password:

यदि आप सफल होते हैं, तो सर्वर 1 . आउटपुट करेगा :

Enter password:1

अब आपके पास उस उपयोगकर्ता की नियमित पहुंच होगी जिसे आपने प्रमाणित किया था:

show dbs
admin   0.000GBconfig  0.000GBlocal   0.000GB

आप किसी भी समय टाइप करके प्रमाणीकृत उपयोगकर्ताओं और वर्तमान कनेक्शन से जुड़ी भूमिकाओं की सूची देख सकते हैं:

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


दूरस्थ डेटाबेस से कनेक्ट करना

यदि आप किसी दूरस्थ MongoDB डेटाबेस से कनेक्ट करना चाहते हैं, तो mongo का उपयोग करते समय आपको कुछ अतिरिक्त विवरण प्रदान करने होंगे खोल।

विशेष रूप से, आपको --host . शामिल करना होगा विकल्प और संभावित रूप से --port विकल्प के रूप में अच्छी तरह से अगर MongoDB सर्वर एक गैर-डिफ़ॉल्ट पोर्ट पर सुन रहा है। लगभग सभी मामलों में, आपको --user . भी प्रदान करना होगा और --password दूरस्थ सर्वर को भी प्रमाणित करने के विकल्प।

रिमोट MongoDB डेटाबेस से कनेक्ट होने पर कमांड की मूल संरचना कुछ इस तरह दिखती है:

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

जैसा कि स्थानीय डेटाबेस से कनेक्ट करने के अनुभाग में बताया गया है, --password . डालकर अंत में विकल्प और पासवर्ड इनलाइन प्रदान नहीं करना इंगित करता है कि आप mongo . चाहते हैं इसके बजाय पासवर्ड के लिए संकेत देने के लिए खोल। यह कमांड में पासवर्ड प्रदान करने की तुलना में अधिक सुरक्षित है क्योंकि यह शेल इतिहास, प्रक्रिया सूचियों और अन्य तंत्रों के माध्यम से दृश्यमान या पुनर्प्राप्त करने योग्य हो सकता है।

डेटाबेस से जुड़ने से पहले MongoDB सर्वर आपको उपयोगकर्ता के पासवर्ड के लिए संकेत देगा:

MongoDB shell version v.4.4.6Enter password:

सफलतापूर्वक प्रमाणित होने पर, आपको डेटाबेस से कनेक्ट होना चाहिए और अपना सत्र सामान्य रूप से जारी रखने में सक्षम होना चाहिए।

आप --host . का उपयोग करने के बजाय कनेक्शन स्ट्रिंग पास करके भी यह जानकारी प्रदान कर सकते हैं , --port , --username और --password विकल्प:

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

चूंकि हमने संकेत दिया है कि उपयोगकर्ता के पास <username>: . के साथ एक पासवर्ड है सिंटैक्स, लेकिन एक प्रदान नहीं किया है, mongo शेल पासवर्ड के लिए संकेत देगा।



एक MongoDB सर्वर के प्रमाणीकरण कॉन्फ़िगरेशन को एडजस्ट करना

यदि आप उन नियमों को संशोधित करना चाहते हैं जो यह निर्धारित करते हैं कि उपयोगकर्ता आपके MongoDB उदाहरणों को कैसे प्रमाणित कर सकते हैं, तो आप अपने सर्वर के कॉन्फ़िगरेशन को संशोधित करके ऐसा कर सकते हैं। आप इस लेख में MongoDB के प्रमाणीकरण कॉन्फ़िगरेशन को संशोधित करने का तरीका जान सकते हैं।



निष्कर्ष

इस गाइड में, हमने क्लाइंट की ओर से MongoDB प्रमाणीकरण को कवर किया है। हमने दिखाया कि mongo . का उपयोग कैसे किया जाता है विभिन्न विधियों का उपयोग करके स्थानीय और दूरस्थ डेटाबेस इंस्टेंस दोनों से कनेक्ट करने के लिए खोल।

जब आप डेटाबेस सिस्टम पर काम करना शुरू करते हैं तो विभिन्न MongoDB इंस्टेंस से कनेक्ट करने का तरीका जानना महत्वपूर्ण है। आप विकास के लिए एक स्थानीय मोंगोडीबी इंस्टेंस चला सकते हैं जिसके लिए किसी विशेष प्रमाणीकरण की आवश्यकता नहीं है, लेकिन स्टेजिंग और उत्पादन में आपके डेटाबेस को लगभग निश्चित रूप से प्रमाणीकरण की आवश्यकता होगी। किसी भी मामले में प्रमाणित करने में सक्षम होने से आप अलग-अलग वातावरण में अच्छी तरह से काम कर सकेंगे।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongoose.js क्वेरीज़ को समकालिक रूप से चलाना

  2. आपके अनुप्रयोगों के लिए पारदर्शी डेटाबेस विफलता

  3. MongoDB GPG - अमान्य हस्ताक्षर

  4. मोंगोडब में एक सरणी में कई तत्वों को अपडेट करें

  5. MongoDB में किसी दस्तावेज़ को हटाने के 4 तरीके