macos - मोंगोडब मोंगोद शिकायत करता है कि कोई / डेटा / डीबी फ़ोल्डर नहीं है





mongodb (15)


आपके आदेश ने मौजूदा फ़ोल्डर में निर्देशिका संरचना बनाई होगी, न कि आपके कंप्यूटर की मूल निर्देशिका (जो गुम है / है)।

पहला आदेश सही था, लेकिन क्योंकि आप एक फ़ोल्डर बनाने की कोशिश कर रहे हैं, जो एक संरक्षित निर्देशिका है, आपको इसे sudo साथ उपसर्ग करना होगा, जो "सुपरसियर डू" के लिए छोटा है। फिर आपको अपने पासवर्ड के लिए कहा जाएगा।

तो पूर्ण आदेश होगा:

$ sudo mkdir -p /data/db

मैं आज पहली बार अपने नए मैक का उपयोग कर रहा हूँ। मैं mongodb.org पर उस चरण तक शुरू करने की मार्गदर्शिका का पालन कर रहा हूं जब तक कोई व्यक्ति / डेटा / डीबी निर्देशिका बनाता है। बीटीडब्ल्यू, मैंने होमब्री मार्ग का उपयोग किया।

तो मैं एक टर्मिनल खोलता हूं, और मुझे लगता है कि मैं होम डायरेक्टरी कहलाता हूं, जब मैं "एलएस" करता हूं, तो मुझे डेस्कटॉप एप्लिकेशन मूवीज़ म्यूजिक पिक्चर्स डॉक्यूमेंट्स और लाइब्रेरी के फ़ोल्डर्स दिखाई देते हैं।

तो मैंने एक किया

mkdir -p /data/db

सबसे पहले, यह अनुमति अस्वीकार कर दिया गया है। मैंने आधे घंटे तक अलग-अलग चीजों की कोशिश की और आखिरकार:

mkdir -p data/db

काम किया। और जब मैं "ls", डेटा की एक निर्देशिका और इसमें घोंसला एक डीबी फ़ोल्डर मौजूद है।

तो मैं मोंगोड को आग लगाता हूं और यह डेटा / डीबी नहीं ढूंढने की शिकायत करता है

क्या मैंने कुछ गलत किया?

अब मैंने किया है

sudo mkdir -p /data/db

और जब मैं "एलएस" करता हूं तो मुझे डेटा डीआईआर और डीबी डीआईआर दिखाई देता है। हालांकि डीबी डायर के अंदर, इसमें बिल्कुल कुछ नहीं है और जब मैं अब मोंगोड चलाता हूं

Sun Oct 30 19:35:19 [initandlisten] exception in initAndListen: 10309 Unable to create/open lock file: /data/db/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating
Sun Oct 30 19:35:19 dbexit: 
Sun Oct 30 19:35:19 [initandlisten] shutdown: going to close listening sockets...
Sun Oct 30 19:35:19 [initandlisten] shutdown: going to flush diaglog...
Sun Oct 30 19:35:19 [initandlisten] shutdown: going to close sockets...
Sun Oct 30 19:35:19 [initandlisten] shutdown: waiting for fs preallocator...
Sun Oct 30 19:35:19 [initandlisten] shutdown: lock for final commit...
Sun Oct 30 19:35:19 [initandlisten] shutdown: final commit...
Sun Oct 30 19:35:19 [initandlisten] shutdown: closing all files...
Sun Oct 30 19:35:19 [initandlisten] closeAllFiles() finished
Sun Oct 30 19:35:19 [initandlisten] shutdown: removing fs lock...
Sun Oct 30 19:35:19 [initandlisten] couldn't remove fs lock errno:9 Bad file descriptor
Sun Oct 30 19:35:19 dbexit: really exiting now

संपादित करने के लिए त्रुटि संदेश प्राप्त करें

sudo chown mongod:mongod /data/db

chown: mongod: Invalid argument

सबको धन्यवाद!




मैक पर ब्रू के माध्यम से स्थापित जहां YOUR_USER_NAME और कर्मचारी समूह है

sudo mkdir -p /data/db
sudo chmod +x+r+w /data/db/
sudo touch /data/db/mongod.lock
sudo chown YOUR_USER_NAME:staff /data/db
sudo chmod +x+r+w /data/db/mongod.lock
sudo chown YOUR_USER_NAME:staff /data/db/mongod.lock



उपलब्ध उपयोगकर्ता आईडी को देखने के लिए टर्मिनल पर "आईडी" टाइप करें, फिर बस टाइप करें

" सुडो चोउन -आर idname / डेटा / डीबी"

यह मेरे लिए काम किया! उम्मीद है कि यह आपके मुद्दे को हल करता है।




टिप्पणियों में पाया गया यह मेरे लिए काम करता है:

sudo chown -R $USER /data/db



यदि आप तर्क के बिना मोंगो चलाते हैं तो यह मान लें कि आप उत्पादन मशीन पर चल रहे हैं, इसलिए यह डिफ़ॉल्ट स्थानों का उपयोग कर रहा है।

अपने डेटाबेस का उपयोग करने के लिए (देव या सिर्फ एक अलग):

./bin/mongod --dbpath ~/data/db



ओएस एक्स पर उस त्रुटि को ठीक करने के लिए, मैंने पुनरारंभ किया और सेवा को रोक दिया: $ brew services restart mongodb $ brew services stop mongodb

तब मैंने mongod --config /usr/local/etc/mongod.conf चलाया, और समस्या चली गई।

Mongodb homebrew पैकेज को अपग्रेड करने के बाद त्रुटि उत्पन्न हुई।




मुझे मौजूदा मोंगोब सेटअप के साथ यह समस्या थी। मुझे अभी भी यकीन नहीं है कि ऐसा क्यों हुआ, लेकिन किसी कारण से मोंगोड प्रक्रिया mongod.config फ़ाइल नहीं मिली। क्योंकि यह कॉन्फ़िगरेशन फ़ाइल नहीं ढूंढ सका, उसने डीबी फाइलों को / डेटा / डीबी में खोजने की कोशिश की, एक फ़ोल्डर जो मौजूद नहीं था। हालांकि, कॉन्फ़िगरेशन फ़ाइल अभी भी उपलब्ध थी इसलिए मैंने सुनिश्चित किया कि प्रक्रिया में कॉन्फ़िगरेशन फ़ाइल की अनुमति है और निम्नानुसार कॉन्फ़िगर ध्वज के साथ मोंगोड प्रक्रिया चलाएं:

mongod --config /etc/mongod.conf

कॉन्फ़िगरेशन फ़ाइल में ही मुझे यह सेटिंग थी:

storage:
  dbPath: /var/lib/mongodb

और इस तरह प्रक्रिया को असली डीबी फ़ोल्डर फिर से मिल सकता है।




आपको / डेटा / डीबी बनाने की जरूरत है ... यह आपकी रूट (यानी / ) में उपशीर्षक / डेटा / नामक एक निर्देशिका है जिसे / db / ... कहा जाता है

आपको अनुमति त्रुटियां मिल रही हैं क्योंकि आपको मैकोज़ में अपने रूट डीआईआर में एक सख्त कॉन्ट्री बनाने के लिए सुडो का उपयोग करने की आवश्यकता है, सुडो आपको कमांड को व्यवस्थापक के रूप में चलाने देता है।

तो, इसे इसके बजाए चलाएं ...

$ sudo mkdir -p /data/db

यह आपको पासवर्ड के लिए संकेत देगा, यह वही पासवर्ड है जिसका उपयोग आप सिस्टम सेटिंग्स को बदलने के लिए करते हैं (उस छोटे संवाद जो खुलता है जब आप सिस्टम की प्राथमिकताओं में सिस्टम की प्राथमिकताओं में कोशिश करते हैं और बदलते हैं), और संभवतः आप लॉगिन करने के लिए उपयोग करते हैं।




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

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

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

या तो आपको sudo का उपयोग करने की ज़रूरत है, उदाहरण के लिए sudo mkdir -p /data/db

या आपको suus करने की आवश्यकता है su - सुपरसियर बनने के लिए, और फिर mkdir -p /data/db साथ निर्देशिका बनाएं

ध्यान दें:

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

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

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

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

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

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

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

सबसे पहले उपयोगकर्ता और समूह को अपने मोंगो उपयोगकर्ता को जांचें:

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

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

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 के माध्यम से देख सकने वाले ट्यूटोरियल में से एक को भी देखें: "शुरुआती के लिए यूनिक्स"




बस एक त्वरित नोट:

यदि आपने पहले अनुमतियों को बदले बिना मोंगोड चलाने का प्रयास किया है, तो आपके पास / mdod.lock फ़ाइल (और कुछ अन्य फ़ाइलें) / डेटा / डीबी निर्देशिका में संभावित रूप से एक mongod.lock फ़ाइल होगी। अपने $ USER तक पहुंच प्रदान करने के लिए / डेटा / डीबी निर्देशिका के लिए अनुमतियों को बदलने के बाद भी, आपको "लॉक फ़ाइल बनाने / खोलने में असमर्थ: /data/db/mongod.lock त्रुटि: 13 अनुमति अस्वीकार कर दी जाएगी "त्रुटि। Ls -al / data / db चलाएं और आप शायद देखेंगे कि अलग-अलग फ़ाइलों के लिए अनुमतियां अभी भी उपयोगकर्ता के लिए रूट पर सेट हैं, न कि आपके $ USER के लिए। आपको mongod.lock फ़ाइल, और अन्य को भी हटा देना चाहिए। फिर जब आप फिर से मोंगोड चलाते हैं, तो सबकुछ काम करना चाहिए, और आप यह सत्यापित कर सकते हैं कि फ़ाइल अनुमतियां ls -al को फिर से चलाकर निर्देशिका अनुमतियों से मेल खाते हैं।




मैंने किया

brew install mongodb

2017-02-01 को और उसने मुझे mongodb संस्करण 3.6.2 दिया।

उपरोक्त ऑर्लूक के जवाब से संकेत दिया, मैंने बस कोशिश की

$ brew services restart mongodb

और सब कुछ जीवन में उग आया। मेरा mongoose.createConnection() कॉल जो मैंने चाहता था किया था। जीयूआई मोंगोडीबी कम्पास , सामुदायिक संस्करण, कनेक्ट होगा। मैंने local.startup_log संग्रह को देखने के लिए कम्पास का उपयोग किया। उसमें एक दस्तावेज़ था, मेरे लॉग इन सिर्फ एमओएनओडीबी सेवा शुरू कर रहा था, और उसके पास था

cmdLine:Object
    config:"/usr/local/etc/mongod.conf"

और वास्तव में ऐसी फाइल थी:

$ more /usr/local/etc/mongod.conf
systemLog:
  destination: file
  path: /usr/local/var/log/mongodb/mongo.log
  logAppend: true
storage:
  dbPath: /usr/local/var/mongodb
net:
  bindIp: 127.0.0.1

और वहां कई /usr/local/var/mongodb अस्पष्ट फ़ाइलों के साथ एक /usr/local/var/mongodb निर्देशिका थी। तो ऐसा लगता है कि स्थापना अब कैसे काम करती है।

मुझे यकीन नहीं है कि क्या brew services restart लॉगिन पर चलाने के लिए सेवा सेट करता है। तो मैंने किया

brew services stop mongodb
brew services start mongodb

और आशा की कि रिबूट के बाद इसे फिर से शुरू करें। और, वास्तव में, यह किया था। वास्तव में, अब, मुझे लगता है कि प्रारंभिक स्थापना के बाद सही काम करना है

brew services start mongodb

और उसे रीबूट के बाद सेवा शुरू करनी चाहिए और इसे पुनरारंभ करना चाहिए।




MongoDB के अधिक मौजूदा संस्करणों में, मेरे पास 3.2.10 है, इसे संग्रहीत किया जाता है

/var/lib/mongodb




आप एक ऐसी निर्देशिका बनाने की कोशिश कर रहे हैं जिसके पास आपकी रूट पहुंच नहीं है।

Mongodb का परीक्षण करने के लिए, मैं बस अपनी उपयोगकर्ता निर्देशिका से एक निर्देशिका का उपयोग करें जैसे:

cd
mkdir -p temp/
mongod --dbpath .

यह आपकी वर्तमान कार्यशील निर्देशिका से अस्थायी / mongo डेटाबेस बना देगा




फ़ोल्डर बनाएँ।

sudo mkdir -p /data/db/

फ़ोल्डर को अनुमति दें।

sudo chown `id -u` /data/db

फिर आप बिना mongod चला सकते हैं। ओएसएक्स योसाइट पर काम करता है




मुझे बिल्कुल वही समस्या का सामना करना पड़ा और अनुवर्ती किया:

  • फ़ाइल mongod.lock हटा दी गई (मेरे मामले में यह फ़ाइल / var / lib / mongodb / पर स्थित थी)
  • मेरे मोंगो क्लाइंट से निम्न आदेश का उपयोग किया

मोंगो --repair

और यह मुद्दा तय किया। यह ध्यान दिया जा सकता है कि इस समस्या से पहले मुझे सिस्टम क्रैश हुआ था। इसलिए, मुझे विश्वास है कि समस्या सर्वर राक्षस के अशुद्ध शटडाउन के कारण हुई थी।

यदि आप कारण से अनिश्चित हैं, तो आप लॉग फ़ाइल को देखना चाहेंगे (मेरे मामले में मैंने इसे / var / log / mongodb /) के अंतर्गत पाया। इससे आपको कुछ उपयोगी संकेत मिल सकते हैं।

धन्यवाद।





macos mongodb