कहां, यानी आपने किस डेटाबेस में यूजर बनाया? आमतौर पर उपयोगकर्ता डेटाबेस में बनाए जाते हैं admin
. जब आप किसी MongoDB से जुड़ते हैं तो आपको हमेशा प्रमाणीकरण डेटाबेस और वह डेटाबेस निर्दिष्ट करना चाहिए जिसका आप उपयोग करना चाहते हैं।
डिफ़ॉल्ट थोड़ा भ्रमित करने वाला है और वास्तव में सुसंगत नहीं है, एक सिंहावलोकन प्राप्त करने के लिए यह तालिका देखें:
+----------------------------------------------------------------------------------------+
|Connection string | Authentication | Current |
| | database | database |
+----------------------------------------------------------------------------------------+
|mongo -u <...> -p <...> --authenticationDatabase admin myDB | admin | myDB |
|mongo -u <...> -p <...> myDB | myDB | myDB |
|mongo -u <...> -p <...> --authenticationDatabase admin | admin | test |
|mongo -u <...> -p <...> localhost:27017 | test | test |
|mongo -u <...> -p <...> --host localhost:27017 | admin | test |
|mongo -u <...> -p <...> | admin | test |
+----------------------------------------------------------------------------------------+
यदि आप यूआरआई प्रारूप में कनेक्शन स्ट्रिंग का उपयोग करना चाहते हैं, तो यह इनके अनुरूप होगा:
mongodb://<username>:<password>@hostname/myDB?authSource=admin
mongodb://<username>:<password>@hostname/myDB
mongodb://<username>:<password>@hostname?authSource=admin
mongodb://<username>:<password>@hostname
मुझे लगता है कि आपने उपयोगकर्ता को admin
. में बनाया है डेटाबेस लेकिन जैसा कि आप कनेक्ट करते समय प्रमाणीकरणडेटाबेस निर्दिष्ट नहीं करते हैं, मोंगो इसे mydatabase
पर डिफ़ॉल्ट करता है जहां यह विफल हो जाता है, क्योंकि उपयोगकर्ता डेटाबेस में मौजूद नहीं है mydatabase
।