अपने MongoDB डेटाबेस सर्वर को चालू करने और चलाने के बाद सबसे पहले कार्यों में से एक अपने उपयोगकर्ताओं और डेटाबेस को कॉन्फ़िगर करना है। इस पोस्ट में, हम MongoDB में उपयोगकर्ताओं को बनाने और कॉन्फ़िगर करने के कुछ सामान्य परिदृश्यों पर चर्चा करेंगे। MongoDB उपयोगकर्ता प्रबंधन में पिछली दो रिलीज़ की तुलना में काफी सुधार हुआ है और अब यह एक सक्षम और कार्यात्मक उपयोगकर्ता प्रबंधन मॉडल है। उपयोगकर्ताओं को विभिन्न भूमिकाएँ सौंपी जा सकती हैं, और भूमिकाओं को वांछित विशेषाधिकारों के साथ कॉन्फ़िगर किया जा सकता है। उपयोग करने के लिए कई अंतर्निहित उपयोगकर्ता भूमिकाएँ हैं, या आप अपनी स्वयं की कस्टम भूमिकाएँ बना सकते हैं।
इस पोस्ट के उदाहरणों में 2.6.4 क्लाइंट और 2.6.4 सर्वर का उपयोग किया गया है। उपयोगकर्ता प्रबंधन मॉडल में 2.4 से 2.6 तक महत्वपूर्ण परिवर्तन किए गए। इसलिए, यदि आप 2.4 क्लाइंट का उपयोग कर रहे हैं, तो इस पोस्ट के बहुत से उदाहरण आपके काम नहीं आएंगे। आप निम्न सिंटैक्स का उपयोग करके yoMongoDBodb क्लाइंट के संस्करण की जांच कर सकते हैं:
मोंगो --वर्जन
डेटाबेस में उपयोगकर्ता जोड़ना
अपना उपयोगकर्ता बनाने के बाद पहला कदम अपना एप्लिकेशन डेटाबेस बनाना है:
एप्लीकेशनडीबी का उपयोग करें;
इस डेटाबेस को बनाने के बाद, हम उस उपयोगकर्ता को बनाना चाहते हैं जिसका उपयोग एप्लिकेशन द्वारा इस डेटाबेस में लिखने के लिए किया जाएगा। हम चाहते हैं कि यह उपयोगकर्ता डेटाबेस को पढ़ने और लिखने के विशेषाधिकार प्राप्त करे:
db.createUser({'user':'appuser', 'pwd':'', role:['readWrite']});
कभी-कभी, हम उन उपयोगकर्ताओं को भी जोड़ना चाहते हैं जिनके पास डेटाबेस तक केवल पढ़ने के लिए पहुंच है। उदाहरण के लिए, हो सकता है कि हम एक ऐसे एनालिटिक्स उपयोगकर्ता को जोड़ना चाहें जिसके पास डेटाबेस तक केवल पढ़ने के लिए पहुंच हो:
db.createUser({'user':'analyticsuser', 'pwd':'', role:['read']});
अब जब उपयोगकर्ता बन गए हैं, तो चलिए MongoDB कंसोल से इस उपयोगकर्ता के रूप में कनेक्ट करने का प्रयास करते हैं:
mongo -u 'appuser' -p/applicationdbMongoDB शेल संस्करण:2.6.4इससे कनेक्ट हो रहा है: /applicationdb>
आपको सफलतापूर्वक कनेक्ट होना चाहिए था! सिंटैक्स के अंत में "/ applicationdb" पर ध्यान दें, MongoDB को 'एप्लिकेशनडीबी' डेटाबेस पर 'appuser' को प्रमाणित करने के लिए कहता है।
एक उपयोगकर्ता को एक से अधिक डेटाबेस में जोड़ना
कई परिदृश्यों में, हमें सर्वर पर एकाधिक डेटाबेस बनाने की आवश्यकता होती है। उदाहरण के लिए, इस परिदृश्य में, हमें विश्लेषिकी के परिणामों को संग्रहीत करने के लिए एक और डेटाबेस 'एनालिटिक्सडीबी' बनाने की आवश्यकता हो सकती है। 'एनालिटिक्स यूजर' को अब 'एप्लिकेशनडीबी' पर 'रीड ओनली' एक्सेस और 'एनालिटिक्सडीबी' पर 'रीडराइट' परमिशन की जरूरत है।
तो, हम इसे कैसे प्राप्त कर सकते हैं? क्या हमें प्रत्येक डेटाबेस में 'analyticsuser' जोड़ना चाहिए? यह लंबे समय तक एक प्रबंधन दुःस्वप्न बनाता है क्योंकि कई उपयोगकर्ता और डेटाबेस जोड़े जाते हैं। सौभाग्य से, एक सरल उपाय है। हम उपयोगकर्ता के लिए भूमिका असाइनमेंट को केंद्रीकृत कर सकते हैं और उन्हें एक डेटाबेस में संग्रहीत कर सकते हैं। इस परिदृश्य में, मैं इन असाइनमेंट को 'व्यवस्थापक' डेटाबेस में संग्रहीत करना पसंद करता हूं क्योंकि यह सर्वर में केंद्रीय प्रशासन का केंद्र है, लेकिन आप इसे एक अलग डेटाबेस में भी संग्रहीत कर सकते हैं:
admindb.createUser({user:'analyticsuser', pwd:'', role:[{'role':'read', 'db':'applicationdb'}, {'role':' का उपयोग करें। readWrite', 'db':'analyticsdb'}]});
एक बार इसे जोड़ने के बाद, आप अपने उपयोगकर्ताओं के विवरण दिखाने के लिए 'उपयोगकर्ता दिखाएं' का उपयोग कर सकते हैं। यहाँ मेरा व्यवस्थापक डेटाबेस कैसा दिखता है:
व्यवस्थापक का उपयोग करें> उपयोगकर्ताओं को दिखाएं{"_id":"admin.admin",,"user":"admin",,"db":"admin",,"roles" :[{"role" :"root"," db" :"admin"},{"role" :"restore","db" :"admin"}]}{"_id" :"admin.analyticsuser",,"user" :"analyticsuser","db" :"व्यवस्थापक", "भूमिकाएं":[{"भूमिका":"पढ़ें", "डीबी":"एप्लिकेशनडीबी"}, {"भूमिका":"रीडराइट", "डीबी":'एनालिटिक्सडीबी"}]}>
अब जब हमारा उपयोगकर्ता जुड़ गया है, तो आइए ऊपर दिए गए सिंटैक्स का उपयोग करके प्रमाणीकरण को सत्यापित करने के लिए कंसोल से कनेक्ट करने का प्रयास करें:
mongo -u 'analyticsuser' -p/applicationdb
हालांकि, प्रमाणीकरण विफल रहता है:
2014-10-06T23:11:42.616+0000 त्रुटि:18 { ठीक:0.0, त्रुटि:"प्रमाणीकरण विफल", कोड:18} src/mongo/shell/db.js:1210अपवाद:लॉगिन विफलपर> पूर्व>इसका कारण यह है कि 'एनालिटिक्स यूजर' को 'एडमिन' डेटाबेस पर परिभाषित किया गया है न कि 'एप्लिकेशनडीबी' पर। इसे निर्दिष्ट करने का तरीका '-प्रमाणीकरणडेटाबेस' पैरामीटर का उपयोग करना है।
mongo -u 'analyticsuser' -p/applicationdb --authenticationDatabase 'admin' इस बार, लॉगिन सफल हुआ:
MongoDB शेल संस्करण:2.6.4इससे कनेक्ट हो रहा है:/applicationdb MongoDB में उपलब्ध विभिन्न अन्य अंतर्निहित भूमिकाओं को बेहतर ढंग से समझने के लिए, आप बिल्ट-इन भूमिकाओं पर MongoDB दस्तावेज़ीकरण का उल्लेख कर सकते हैं। हमेशा की तरह, यदि आपके और प्रश्न हैं, तो आप हमें [email protected] पर संपर्क कर सकते हैं।