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

Mongod शिकायत करता है कि कोई /data/db फ़ोल्डर नहीं है

आपने निर्देशिका गलत जगह बनाई है

/डेटा/डीबी का अर्थ है कि यह सीधे '/' रूट निर्देशिका के अंतर्गत है, जबकि आपने 'डेटा/डीबी' (बिना अग्रणी /) बनाया है, शायद किसी अन्य निर्देशिका के अंदर, जैसे कि '/ रूट' होमडायरेक्टरी।

आपको इस निर्देशिका को रूट के रूप में बनाने की आवश्यकता है

या तो आपको sudo . का उपयोग करना होगा , जैसे sudo mkdir -p /data/db

या आपको su - . करना होगा सुपरयूज़र बनने के लिए, और फिर mkdir -p /data/db . के साथ डायरेक्टरी बनाएं

नोट:

MongoDB के पास एक विकल्प भी है जहाँ आप किसी अन्य स्थान पर डेटा निर्देशिका बना सकते हैं, लेकिन यह आमतौर पर एक अच्छा विचार नहीं है, क्योंकि यह DB पुनर्प्राप्ति जैसी चीज़ों को थोड़ा जटिल करता है, क्योंकि आपको हमेशा db-पथ को मैन्युअल रूप से निर्दिष्ट करना होता है। मैं ऐसा करने की अनुशंसा नहीं करता।

संपादित करें:

आपको जो त्रुटि संदेश मिल रहा है वह है "लॉक फ़ाइल बनाने/खोलने में असमर्थ:/data/db/mongod.lock errno:13 अनुमति अस्वीकृत" . ऐसा लगता है कि आपके द्वारा बनाई गई निर्देशिका में सही अनुमतियाँ और स्वामित्व नहीं हैं -- इसे उस उपयोगकर्ता द्वारा लिखने योग्य होना चाहिए जो MongoDB प्रक्रिया चलाता है।

'/ डेटा/डीबी/' निर्देशिका की अनुमतियां और स्वामित्व देखने के लिए, यह करें:(यह वही है जो अनुमतियां और स्वामित्व दिखना चाहिए)

$ ls -ld /data/db/
drwxr-xr-x 4 mongod mongod 4096 Oct 26 10:31 /data/db/

बाईं ओर 'drwxr-xr-x' उपयोगकर्ता, समूह और अन्य के लिए अनुमतियाँ दिखाता है। 'mongod mongod' दिखाता है कि निर्देशिका का मालिक कौन है, और वह निर्देशिका किस समूह से संबंधित है। दोनों को इस मामले में 'mongod' कहा जाता है।

यदि आपकी '/data/db' निर्देशिका के पास उपरोक्त अनुमतियां और स्वामित्व नहीं है, तो यह करें :

पहले जांचें कि आपके मोंगो उपयोगकर्ता के पास कौन सा उपयोगकर्ता और समूह है:

# grep mongo /etc/passwd
mongod:x:498:496:mongod:/var/lib/mongo:/bin/false

आपके पास mongod के लिए /etc/passwd में एक प्रविष्टि होनी चाहिए, क्योंकि यह एक डेमॉन है।

sudo chmod 0755 /data/db
sudo chown -R 498:496 /data/db    # using the user-id , group-id

आप उपयोगकर्ता-नाम और समूह-नाम का उपयोग निम्नानुसार भी कर सकते हैं:(वे /etc/passwd और /etc/group में पाए जा सकते हैं)

sudo chown -R mongod:mongod /data/db 

जो इसे काम करना चाहिए..

नीचे दी गई टिप्पणियों में, कुछ लोगों ने इसका इस्तेमाल किया:

sudo chown -R `id -u` /data/db
sudo chmod -R go+w /data/db

या

sudo chown -R $USER /data/db 
sudo chmod -R go+w /data/db

नुकसान यह है कि $USER एक ऐसा खाता है जिसमें लॉगिन शेल होता है। सुरक्षा कारणों से डेमॉन के पास आदर्श रूप से शेल नहीं होना चाहिए, इसलिए आप ऊपर दिए गए पासवर्ड फ़ाइल के grep में /bin/false देखते हैं।

निर्देशिका अनुमतियों के अर्थ को बेहतर ढंग से समझने के लिए यहां देखें:

http://www.perlfect.com/articles/chmod.shtml

हो सकता है कि आप Google के माध्यम से मिलने वाले ट्यूटोरियल में से एक को भी देखें:"शुरुआती के लिए यूनिक्स"



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. वर्तमान दस्तावेज़ फ़ील्ड मान के भीतर भू-स्थानिक $नियर

  2. मोंगोडीबी $stdDevSamp

  3. MongoDB संग्रह का सबसेट दूसरे संग्रह में सहेजें

  4. नेवला - ObjectId की एक सरणी पर पॉप्युलेट का उपयोग करना

  5. स्प्रिंग डेटा MongoDB लेनदेन