हां मूल रूप से आप बिना प्रमाणीकरण के जुड़ सकते हैं लेकिन लगभग कुछ भी नहीं कर सकते। आप चला सकते हैं 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())
.
लेकिन वह सब है। यदि आप क्रेडेंशियल्स को बिल्कुल भी निर्दिष्ट नहीं करते हैं, तो ऐसा लगता है कि यह प्रमाणित करने की कोशिश किए बिना भी कनेक्ट हो जाएगा। मुझे लगता है कि इनिशियलाइज़ेशन चरण में इसे मौसम की जाँच की जानी चाहिए, जिस प्रक्रिया से हम जुड़ते हैं वह प्रमाणीकरण के साथ चल रही है और ज़रूरत पड़ने पर ऑथेनिकियन को बाहर कर देती है।