मुझे एक सेवा के रूप में मोंगॉड को लॉन्च करने में समस्या हो रही है:यह कैसे संभव है कि यह तब काम करता है जब मैं sudo mongod -f /etc/mongod.conf करता हूं लेकिन इसे sudo service mongod start के साथ लॉन्च करते समय मुझे लॉग में एक त्रुटि मिलती है
sudo
कमांड शुरू होता है mongod
root
. के साथ अनुमतियाँ (उर्फ सुपरयुसर एक्सेस)। अगर आप mongod
run चलाते हैं एक सेवा के रूप में उपयोगकर्ता और समूह को सेवा परिभाषा में कॉन्फ़िगर किया गया है (mongodb
आपके उदाहरण में दोनों के लिए)।
mongod
को चलाने की कोई आवश्यकता नहीं है root
. के रूप में प्रोसेस करें उपयोगकर्ता, और इसे कम से कम विशेषाधिकार के सिद्धांत के सामान्य सुरक्षा अभ्यास के अनुसार दृढ़ता से हतोत्साहित किया जाता है।
यदि आप कमांड-लाइन से कॉन्फ़िगरेशन का परीक्षण करना चाहते हैं, तो आप sudo
. का उपयोग कर सकते हैं डिफ़ॉल्ट (रूट) उपयोगकर्ता के बजाय निर्दिष्ट उपयोगकर्ता के साथ चलाने के लिए।
उदाहरण के लिए:
sudo -u mongodb mongod -f /etc/mongod.conf
सामान्य तौर पर, mongod
. चलाने के बजाय सेवा कॉन्फ़िगरेशन का उपयोग करना सबसे अच्छा है मैन्युअल रूप से। मैन्युअल आमंत्रण के साथ आपको कॉन्फ़िगरेशन फ़ाइल पथ जैसे पैरामीटर शामिल करना भी याद रखना होगा (क्योंकि कोई डिफ़ॉल्ट कॉन्फ़िगरेशन पथ नहीं है)। कॉन्फ़िगरेशन फ़ाइल के बिना, mongod
डिफ़ॉल्ट विकल्पों का भी उपयोग करता है जैसे कि dbPath
का /data/db
।
अभिकथन:28595:13:अनुमति अस्वीकृत src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp 267
आपकी अनुमति त्रुटियों का संभावित कारण पहले mongod
started शुरू हो रहा है root
. के रूप में उपयोगकर्ता। कुछ निर्देशिका और फ़ाइलें अब रूट उपयोगकर्ता के स्वामित्व में हो सकती हैं, इसलिए mongodb
उपयोगकर्ता उन तक नहीं पहुंच सकता है। आपकी विशिष्ट त्रुटि डेटा निर्देशिका में फ़ाइलों तक पहुँचने से संबंधित है (अर्थात कॉन्फ़िगर किया गया storage.dbPath
mongod.conf
. में )।
मान लें कि आपने अपने mongod.conf
. में डिफ़ॉल्ट पथ नहीं बदले हैं फ़ाइल, आपको mongod.service
. से मिलान करने के लिए अनुमतियों को पुनरावर्ती रूप से समायोजित करने में सक्षम होना चाहिए परिभाषा अपेक्षित है।
सबसे पहले, सुनिश्चित करें कि आपने अपना mongod
बंद कर दिया है उदाहरण के लिए यदि यह वर्तमान में चल रहा है।
फिर, अपेक्षित उपयोगकर्ता और समूह के लिए अनुमतियों को पुनरावर्ती रूप से समायोजित करें:
# storage.dbPath
sudo chown -R mongodb:mongodb /var/lib/mongodb
# systemLog.path
sudo chown -R mongodb:mongodb /var/log/mongodb
अब आपको mongod
start शुरू करने में सक्षम होना चाहिए एक सेवा के रूप में। यदि सेवा प्रारंभ करने में विफल रहती है, तो mongod
. में और विवरण होना चाहिए लॉग फ़ाइल (यह मानते हुए कि लॉग फ़ाइल mongodb
. द्वारा लिखने योग्य है) सेवा उपयोगकर्ता)।