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

mongodb प्रमाणीकरण सक्षम होने पर भी अतिथि कनेक्शन की अनुमति देता है

हां मूल रूप से आप बिना प्रमाणीकरण के जुड़ सकते हैं लेकिन लगभग कुछ भी नहीं कर सकते। आप चला सकते हैं db.serverBuildInfo()

db.version()

db.adminCommand({ping:1})

db.adminCommand({whatsmyuri:1})

db.adminCommand({features:1})

उदाहरण के लिए, शायद कुछ अन्य आदेश।

जो लगता है मेरे लिए थोड़ा दर्द है कि वह दौड़ने में सक्षम है:

for(var i=0;i++<20000;){db.adminCommand({forceerror:1})}

जो थोड़ा सा लॉग उत्पन्न करता है।

मैंने स्रोतों की जाँच की, और आप देख सकते हैं कि यह व्यवहार एक प्रकार का बग है। शेल स्टार्टअप के स्रोत हैं:https://github.com/mongodb/mongo/blob/master/src/mongo/shell/dbshell.cpp

मूल रूप से पासवर्ड में दिए गए पैरामीटर मानों और मोंगोशेल के लिए उपयोगकर्ता नाम तर्कों के विरुद्ध दो प्रकार के परीक्षण चल रहे हैं। स्टार्टअप यह जांचता है कि आपने --password पैरामीटर कब प्रदान किया है और उसके बाद पासवर्ड नहीं लिखा है। और एक जांच होती है जब आपने डीबी के बिना शुरू करने के लिए निर्दिष्ट नहीं किया है, और आपने एक उपयोगकर्ता नाम निर्दिष्ट किया है जो 0 से अधिक लंबा है, यह प्रमाणित करने का प्रयास करेगा (चेक लाइन 1043)

if (!nodb && username.size()) .

लेकिन वह सब है। यदि आप क्रेडेंशियल्स को बिल्कुल भी निर्दिष्ट नहीं करते हैं, तो ऐसा लगता है कि यह प्रमाणित करने की कोशिश किए बिना भी कनेक्ट हो जाएगा। मुझे लगता है कि इनिशियलाइज़ेशन चरण में इसे मौसम की जाँच की जानी चाहिए, जिस प्रक्रिया से हम जुड़ते हैं वह प्रमाणीकरण के साथ चल रही है और ज़रूरत पड़ने पर ऑथेनिकियन को बाहर कर देती है।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मोंगो संग्रह को ओवरराइड किए बिना मौजूदा संग्रह में आयात करना

  2. नेवला स्कीमा को तत्काल नहीं कर सकता:वस्तु एक कार्य नहीं है

  3. घटनाओं की गणना करें और एकत्रीकरण के दौरान स्ट्रिंग अक्षरशः डालें

  4. पायमोंगो और मल्टीप्रोसेसिंग:सर्वर चयन टाइमआउट त्रुटि

  5. MongoDB:3.6 mongoDb संस्करण में दिनांक का विश्लेषण कैसे करें?