ठीक है, यह सब अनुमतियों के लिए आता है, लेकिन चलिए इसे चरण दर चरण करते हैं। जब आप sudo mongod
run चलाते हैं यह एक कॉन्फिग फ़ाइल को बिल्कुल भी लोड नहीं करता है, यह सचमुच डिफॉल्ट्स में संकलित के साथ शुरू होता है - पोर्ट 27017, डेटाबेस पथ / डेटा / डीबी आदि - यही कारण है कि आपको उस फ़ोल्डर को खोजने में सक्षम नहीं होने के बारे में त्रुटि मिली। "उबंटू डिफ़ॉल्ट" का उपयोग केवल तभी किया जाता है जब आप इसे कॉन्फ़िग फ़ाइल पर इंगित करते हैं (यदि आप सेवा कमांड का उपयोग करना शुरू करते हैं, तो यह आपके लिए पर्दे के पीछे किया जाता है)।
आगे आपने इसे इस तरह चलाया:
sudo mongod -f /etc/mongodb.conf
यदि पहले कोई समस्या नहीं थी, तो अब होगा - आपने रूट उपयोगकर्ता के रूप में अपनी सामान्य कॉन्फ़िगरेशन (अपने सामान्य डीबीपाथ और लॉग पर इंगित) के साथ प्रक्रिया चलाई है। इसका मतलब है कि अब उस सामान्य MongoDB फ़ोल्डर में उपयोगकर्ता के साथ कई फाइलें होने जा रही हैं:root:root
का समूह .
जब आप इसे एक सामान्य सेवा के रूप में फिर से शुरू करने का प्रयास करते हैं तो यह त्रुटियों का कारण होगा, क्योंकि मोंगोडब उपयोगकर्ता (जिसे सेवा चलाने का प्रयास करेगी) को उन root:root
तक पहुंचने की अनुमति नहीं होगी फ़ाइलें, और सबसे विशेष रूप से, यह शायद आपको कोई जानकारी देने के लिए लॉग फ़ाइल में लिखने में सक्षम नहीं होगी।
इसलिए, इसे सामान्य सेवा के रूप में चलाने के लिए, हमें उन अनुमतियों को ठीक करने की आवश्यकता है। सबसे पहले, सुनिश्चित करें कि MongoDB वर्तमान में रूट के रूप में नहीं चल रहा है, फिर:
cd /var/log/mongodb
sudo chown -R mongodb:mongodb .
cd /var/lib/mongodb
sudo chown -R mongodb:mongodb .
इसे ठीक करना चाहिए (उपयोगकर्ता मानते हुए:समूह mongodb:mongodb
. है ), हालांकि ls -al
. के साथ सत्यापित करना शायद सबसे अच्छा है या सुनिश्चित करने के समान। एक बार ऐसा करने के बाद आप सेवा को फिर से सफलतापूर्वक शुरू करने में सक्षम हो जाएंगे।