मैन्गोडब कनेक्शन यूरी पर प्रमाणीकरण डेटाबेस और लक्ष्य डेटाबेस को अलग से कैसे निर्दिष्ट करें?


13

मैं इस कनेक्शन का उपयोग कर रहा हूं मूडी को कनेक्ट करने के लिए उरई mongodb://user:password@localhost/admin:। यह adminबॉट प्रमाणीकरण और लक्ष्य डेटाबेस के रूप में उपयोग करेगा । मैं यूटीआई को adminप्रमाणीकरण के रूप में उपयोग करने के लिए कैसे बना सकता हूं लेकिन मुझे एक अलग डेटाबेस से कनेक्ट करने की अनुमति देता है? एक उदाहरण के रूप में नीचे दिए गए आदेश देखें:

mongo --host localhost -u user -p password --authentication admin test

उपरोक्त कमांड adminप्रमाणीकरण डेटाबेस के रूप में उपयोग करेगा लेकिन डेटाबेस से कनेक्ट होगा test। मैं यूरी पर एक ही काम कैसे कर सकता हूं?

जवाबों:


26

हाँ .. आसानी से!

mongo "mongodb://test:testpwd@localhost/test?authSource=admin"
MongoDB shell version v3.4.6
connecting to: mongodb://test:testpwd@localhost/test?authSource=admin
MongoDB server version: 3.4.6
MongoDB> db
test
MongoDB> 

आपने "बेस" स्ट्रिंग के अंत में अपना डेस्टिनेशन डीबी डाला और पैरामीटर ऑउटसोर्स को प्रमाणीकरण डीबी जोड़ें


हाँ, यह वही है जो मैं देख रहा हूँ। धन्यवाद
जॉय यी झाओ

4

संदर्भ:

https://docs.mongodb.com/manual/reference/connection-string/#connections-connection-options

आपको नीचे प्रारूप का उपयोग करने की आवश्यकता होगी और व्यवस्थापक डेटाबेस का उपयोग करने की आवश्यकता नहीं होगी।

MongoDB: // उपयोगकर्ता: पासवर्ड @ स्थानीय होस्ट / परीक्षण authSource = व्यवस्थापक

/ डेटाबेस वैकल्पिक। यदि कनेक्शन स्ट्रिंग में उपयोगकर्ता नाम: पासवर्ड @ के रूप में प्रमाणीकरण क्रेडेंशियल्स शामिल हैं, तो प्रमाणित करने के लिए डेटाबेस का नाम। यदि / डेटाबेस निर्दिष्ट नहीं है और कनेक्शन स्ट्रिंग में क्रेडेंशियल शामिल हैं, तो ड्राइवर व्यवस्थापक डेटाबेस को प्रमाणित करेगा।

सुनिश्चित करें कि आपके पास testडेटाबेस में एक उपयोगकर्ता है । इस दस्तावेज़ का खंड 6 देखें।

प्रामाणिक सक्षम करें

अपनी तैनाती के लिए आवश्यकतानुसार अतिरिक्त उपयोगकर्ता बनाएँ।

वह डेटाबेस जहां आप उपयोगकर्ता बनाते हैं (इस उदाहरण में, परीक्षण) उपयोगकर्ता का प्रमाणीकरण डेटाबेस है। यद्यपि उपयोगकर्ता इस डेटाबेस को प्रमाणित करेगा, उपयोगकर्ता की अन्य डेटाबेस में भूमिका हो सकती है; यानी उपयोगकर्ता का प्रमाणीकरण डेटाबेस उपयोगकर्ता के विशेषाधिकारों को सीमित नहीं करता है।

use test
db.createUser(
  {
    user: "myTester",
    pwd: "xyz123",
    roles: [ { role: "readWrite", db: "test" },
             { role: "read", db: "reporting" } ]
  }
)

मैं इस uri की कोशिश की है, लेकिन यह काम नहीं करता है। क्योंकि यह testप्रमाणीकरण डेटाबेस के रूप में उपयोग करने की कोशिश करता है जो सही नहीं है। मुझे adminप्रमाणीकरण डेटाबेस के रूप में उपयोग करने और डेटाबेस से कनेक्ट करने की आवश्यकता testहै।
जोए यी झाओ

संशोधित जवाब।
SqlWorldWide

आपके प्रतिक्रिया के लिए धन्येवाद। लेकिन मैं डेटाबेस उदाहरण पर उपयोगकर्ता की भूमिका को बदलना नहीं चाहता। क्या उदाहरण पर कोई बदलाव नहीं करने के लिए कोई समाधान नहीं है?
जॉय यी झाओ

यह कैसे MongoDB द्वारा डिजाइन किया गया है।
SqlWorldWide

क्या इसका मतलब यह है कि मैं इसे मूंग उरी द्वारा प्राप्त नहीं कर सकता हूं?
जॉय यी झाओ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.