মঙ্গোডিবি: ইনআইএন্ডলিস্টনে ব্যতিক্রম: 20 কেবলমাত্র পঠনযোগ্য ডিরেক্টরিতে / লক / ডিবিতে লক ফাইল তৈরি করার চেষ্টা করা হয়েছে: সমাপ্ত হচ্ছে


148

আমি /data/dbরুট ডিরেক্টরিতে তৈরি করে দৌড়েছি ./mongod:

[initandlisten] exception in initAndListen: 20 Attempted to create a lock file on a read-only directory: /data/db, terminating
[initandlisten] shutdown: going to close listening sockets...
[initandlisten] shutdown: going to flush diaglog...
[initandlisten] now exiting
[initandlisten] shutting down with code:100

4
অনুমতিগুলির সমস্যার মতো মনে হচ্ছে। মঙ্গোদ চলমান ব্যবহারকারীর / ডেটা / ডিবি ডিরেক্টরিতে লেখার অনুমতি আছে কি? এর আউটপুট ভাগ করুন ls -ld /data/dbএবং idযাতে আমরা পরামর্শ দিতে পারি।
বজর্ন রোচে

drwxr-xr-x 2 রুট রুট 4096
হোয়াইটইনস্টাইন 9

uid = 1000 (ব্যবহারকারী) জিড = 1000 (ব্যবহারকারী) গোষ্ঠী = 1000 (ব্যবহারকারী), 4 (অ্যাডম), 24 (সিড্রোম), 27 (সুডো), 30 (ডিপ), 46 (প্লাগদেব), 113 (এলপিডমিন), 128 (সাম্বাশেয়ার)
হোয়াইটইনওয়েইন96

@ জর্নরোচ অংশটির জন্য ধন্যবাদ -ld:)
স্কাইনেট

@ জর্জনরোচ আমার আউটপুট drwxrwxrwx. 4 mongod mongod 4096 Sep 17 18:18 /data/dbএবং আমি এখনও ত্রুটি পাচ্ছি। কোন ধারনা?
ব্লেক

উত্তর:


279

সমস্যাটি হ'ল আপনি যে ডিরেক্টরিটি তৈরি /data/dbকরেছেন সেটি মালিকের মালিকানাধীন এবং কেবল ব্যবহারকারীদের দ্বারা লিখিত, তবে আপনি নিজের মতো মংড চালাচ্ছেন। এটি সমাধানের বিভিন্ন উপায় রয়েছে তবে শেষ পর্যন্ত, আপনাকে অবশ্যই প্রশ্নে সঠিক ডিরেক্টরিটি দিতে হবে। যদি এটি উত্পাদনের জন্য হয় তবে আমি আপনাকে ডক্সটি পরীক্ষা করার পরামর্শ দিচ্ছি এবং এটি সাবধানতার সাথে চিন্তা করার জন্য - আপনি সম্ভবত বিশেষ যত্ন নিতে চান।

তবে এটি যদি কেবল পরীক্ষার জন্য হয় এবং আপনার কাজ করার এবং এটির সাথে চালিয়ে যাওয়া দরকার তবে আপনি এটি চেষ্টা করতে পারেন, যা ডিরেক্টরিকে প্রত্যেকের দ্বারা লেখার যোগ্য করে তুলবে:

> sudo chmod -R go+w /data/db

বা এটি, যা আপনার নিজের মালিকানাধীন ডিরেক্টরিটিকে তৈরি করবে:

> sudo chown -R $USER /data/db

4
আমি মনে করি কারও কারও -Rকাছে /data/dbপুনরাবৃত্তভাবে সমস্ত ফাইল ভিতরে পরিবর্তন করা দরকার ।
ইয়ংহাও হু

2
এর জন্য ধন্যবাদ. এটি চেষ্টা করে এবং এখনও একই ত্রুটিটি পেয়েছে
স্যামুয়েল সাহস

1
এই বিষয়টি ইতিমধ্যে একটু পুরানো, কিন্তু আমার জন্য ব্যবহার chmodএকটি নতুন ত্রুটি উত্পন্ন initAndListen : operation not permitted, কিন্তু chownকাজ করেন।
bachinblack

তাও আমার জন্য এটি করেছিলেন
dwagnerkc

ডিরেক্টরিতে 77 u7 টি উমাস্ক দেওয়া খারাপ অভ্যাস। আপনি 755 সেট করতে পারেন এবং এটি কাজ করেchmod -R 755 /data/db
জুয়ান-কাবালি

61

একটি ম্যাকের জন্য আমাকে নিম্নলিখিতগুলি করতে হয়েছিল:

sudo chown -R $USER /data/db
sudo chown -R $USER /tmp/

কারণ এখানে এমন একটি ফাইল ছিল /tmpযা মঙ্গোরও অ্যাক্সেসের প্রয়োজন ছিল


2
ফেডোরা 28 লিনাক্স-এ কাজ করে
স্যামুয়েল ইভান

2
এটি শীর্ষে থাকা উচিত
যশোবন্ত কম্বালা

এটি আমার জন্য এটিও করেছে।
ক্যানোভিস

25

যদি আপনার সিস্টেমটি সেলইনক্স ব্যবহার করছে তবে নিশ্চিত হয়ে নিন যে আপনি যে ডিরেক্টরিটি তৈরি করেছেন তার জন্য সঠিক প্রসঙ্গটি ব্যবহার করছেন:

ls -dZ /data/db/
ls -dZ /var/lib/mongo/

এবং প্রসঙ্গে ক্লোন করুন:

chcon -R --reference=/var/lib/mongo /data/db

1
তুমি আমার দিন বাঁচিয়েছ! আপনাকে অনেক ধন্যবাদ
কের্তিভাসন

2
ls -dZ / var / lib / mongodb / mongo এর পরবর্তী সংস্করণগুলির জন্য
espeed

18

আমি একই সমস্যাটি অনুভব করেছি এবং নিম্নলিখিত সমাধানের ফলে এই সমস্যার সমাধান হয়েছে। আপনি নিম্নলিখিত সমাধান চেষ্টা করা উচিত।

sudo mkdir -p / data / db
sudo chown -R 'ব্যবহারকারীর নাম' / ডেটা / ডিবি


12

এখানে চিত্র বর্ণনা লিখুনপ্রথমে সমস্ত মঙ্গোডিবি পরিষেবা বন্ধ করুন , তারপরে একটি ডিরেক্টরি তৈরি করুন /, এর অর্থ রুট, যদি আপনার না থাকে এবং পোর্ট ফাইলটিও সরিয়ে দিন। এই ডিরেক্টরিতে সমস্ত অনুমতি দিন, সেই ডিরেক্টরি মালিক হয়ে যান, নীচে কমান্ড চালান:

sudo service mongod stop
sudo rm -rf /tmp/mongod*
sudo mkdir -p /data/db
sudo chmod -R a+wxr /data
sudo chown -R $USER:$USER /data

এখন আপনি হয়ে গেছেন, কেবল মঙ্গোডিবি পরিষেবা শুরু করুন, যদি সহায়তা না করে তবে পোর্টটি পরিবর্তন করার মতো চেষ্টা করুন:

sudo service mongod restart && mongod # if didn't help run below cmd
mongod --port 27018

দ্রষ্টব্য: আমার জন্য এই সমস্ত জিনিস কাজ করে এবং আশা করি আপনার জন্য কাজ করবে, ছেলে!


7

/data/db(বা /var/lib/mongodb) এর অনুমতিগুলি ঠিক করুন :

sudo chown -R mongodb: /data/db

তারপরে মোংগোডিবি পুনরায় চালু করুন eg

sudo systemctl restart mongod

যদি সহায়তা না করে তবে আপনি যদি / var / lib / mongodb এর থেকে আলাদা কোনও ডেটা ডিরেক্টরি ব্যবহার করছেন তবে আপনার ত্রুটি বার্তাটি পরীক্ষা করুন। সেক্ষেত্রে রান করুন

sudo chown -R mongodb: <insert your data directory here>

উৎস


5

আপনি যদি নিজের মংডডব লগগুলি পরীক্ষা করে দেখেন এবং আপনি যেমন একটি ত্রুটি পেয়ে থাকেন তবে আমি যেমন করেছি ঠিক তেমন পদক্ষেপগুলি অনুসরণ করুন। এটি আপনার /data/dbডিরেক্টরিতে অনুমতি সংক্রান্ত সমস্যার কারণে ঘটে । আমি উবুন্টু 16.04 ব্যবহার করছি এবং আমি দুটি সহজ কমান্ড অনুসরণ করে সমাধানটি অনুসরণ করব।

পদক্ষেপ 1: / ডেটা / ডিবি ডিরেক্টরিতে অনুমতি দিন:

sudo chmod -R 0777 /data/db

পদক্ষেপ 2: মোংড পরিষেবাটি এইভাবে শুরু করার চেষ্টা করুন:

sudo service mongod start

পদক্ষেপ 3: মংডোড পরিষেবার স্থিতি পরীক্ষা করুন:

sudo service mongod status

2
পদক্ষেপ 1 সমস্ত ব্যবহারকারীদের পড়ার / লেখার / সম্পাদনের অনুমতি প্রদান করবে। এটি ব্যবহার করা উচিত নয়।
জোনাস ফ্রানজ

ধন্যবাদ, আপনার মতামতের জন্য @ জোনাসফ্রেঞ্জ, যাতে সেক্ষেত্রে আমরা প্রোডাকশন সার্ভারের জন্য 0755 অনুমতি ব্যবহার করতে পারি। আমি ভুল হলে আমাকে সংশোধন করুন।
জিতেন্দ্র

4

দুর্দান্ত সমাধান, তবে আমি অবাক হয়েছি কেন কেউ উইন্ডোজের জন্য সমাধানটি দিচ্ছে না।

আপনি যদি উইন্ডো ব্যবহার করছেন তবে আপনাকে কেবল "প্রশাসক হিসাবে চালান" সেন্টিমিডি করতে হবে।


6
আমি মনে করি কারণ এটি সাধারণত উইন্ডোজে ডাটাবেস সার্ভার চালায় না।
ব্লেক

1
এছাড়া, এটিও প্রশাসক / রুট হিসাবে একটি ডাটাবেস চালানোর এখানে অন্যান্য মন্তব্য চেক করতে একটা খারাপ ধারণা এই এক মত আরো বিস্তারিত জানার জন্য
নিনো Filiu

4

আমি একই সমস্যাটি মোকাবিলা করেছি:

মংগোডিবি ডিরেক্টরিতে পরিবর্তন রয়েছে যার ডিরেক্টরি রয়েছে binএবং রান করুন:

sudo bin/mongod 

রুট ব্যবহারকারী হিসাবে মংগোডিবি চালানো আপনাকে রুট পাসওয়ার্ড দেওয়ার জন্য বলা হতে পারে। আপনি যদি এখনও মঙ্গোডিবি পরিচালনা করতে না পারেন তবে মঙ্গোডিবি এর ডেটা ডিরেক্টরিতে অনুমতি পরীক্ষা করুন। প্রবেশ করান:

ls -ld /data

বা ls -l /ডিরেক্টরি সহ ডিরেক্টরিতে সমস্ত ডিরেক্টরি এবং ফাইলগুলির অনুমতিগুলির জন্য টাইপ করুন/data

মূল ব্যবহারকারীর জন্য অনুমতি মোড " rwx" হওয়া উচিত , যার অর্থ রুট ব্যবহারকারী ফাইলগুলি পড়তে, লিখতে এবং চালিত করতে সক্ষম। এটি ঘটতে, আমরা ব্যবহার করি:

chmod 755 /data 

755/dataডিরেক্টরিটির অনুমতিগুলি সেট করার জন্য একটি অষ্টাল স্বরলিপি rwxr-xr-xযা " " তে নির্ধারিত হয় , যার অর্থ রুট ব্যবহারকারী পড়তে, লিখতে এবং চালাতে পারে, "গ্রুপ" এবং "প্রত্যেকে" কেবলমাত্র পড়তে ও চালাতে সক্ষম হয়।

দ্রষ্টব্য: আপনি যখন এটি করতে পারবেন না, পরিবর্তে টাইপ করুন:

sudo chmod 755 /data   

মূল ব্যবহারকারী হিসাবে অনুমতি সেট করতে।

তারপরে, এই পদক্ষেপটি সম্পন্ন করার পরে, অনুমতি মোডগুলি ব্যবহার করে আবার ব্যবহার করুন:

ls -ld /data

যা দেখতে হবে:

drwxr-xr-x  3 root  wheel  102 Mar  3 17:00 /data

dশুরুতে আপনার " " সম্পর্কে চিন্তা করার দরকার নেই এবং লক্ষ্য করুন যে অনুমতিগুলি প্রতিফলিত হয়েছে "rwxr-xr-x "।

আপনি এখন মঙ্গোডিবি ডিরেক্টরিতে ফিরে গিয়ে টাইপ করতে পারেন:

sudo bin/mongod  

মঙ্গোডিবি চালাতে


2
খারাপ ধারণা, এটি কখনও সুডো হিসাবে চালায় না। আপনার ডিস্ট্রোর উপর নির্ভর করে আরও ভাল সমাধান রয়েছে যা ব্যবহারকারীর / গোষ্ঠীটিকে মঙ্গোদ বা মংডব পরিচালনা করে। এই সমাধানটি ব্যবহার করবেন না।
অ্যান্ডি

3

রুটে যদি আপনার ডাটাবেস ডিরেক্টরিগুলির প্রয়োজন না হয়, আপনি data/dbনিজের হোম ডিরেক্টরিতে ( mkdir -p ~/data/db) তৈরি করতে পারেন ।

তারপরে আপনি মঙ্গোডিবি সার্ভারটি --dbpathবিকল্পটি দিয়ে শুরু করতে পারেন :

mongod --dbpath=$(echo ~)/data/db

(এটি ধরে নিচ্ছে যে আপনি এটি একটি টার্মিনাল থেকে শুরু করছেন some কোনও অদ্ভুত কারণে, mongodহোম ডিরেক্টরি ডিরেক্টরি হিসাবে গ্রহণ করে না hence সুতরাং বাশ প্রতিধ্বনি প্রতিস্থাপনের কৌশল, আপনি পাশাপাশি লিখতেও পারেন /home/yourusername/data/db)

আসলে এটি হওয়ার দরকার নেই ~/data/db, এটি আপনি যে কোনও জায়গাতেই হতে পারেন এবং এইভাবে আপনার একাধিক ডাটাবেস পাথ থাকতে পারে এবং সুন্দরভাবে সবকিছু গুছিয়ে রাখতে পারেন। উত্পাদনের জন্য সেরা বিকল্প নাও হতে পারে (আপনি যা করতে চান তার উপর নির্ভর করে), তবে উন্নত কাজগুলি উন্নত করার জন্য।


2

আপনার কেবলমাত্র সুপার ব্যবহারকারী হিসাবে কমান্ডটি চালানো দরকার:

টার্মিনাল থেকে শুধু টাইপ করুন: sudo su mongod


1
সুপারভাইজার হিসাবে এই জাতীয় প্রোগ্রাম চালানো সবসময় খারাপ ধারণা। ফোল্ডারগুলির অনুমতিগুলি ঠিক করা আরও ভাল
জেসন


-1

এটি আমার জন্য উবুন্টু এলটিএস 20.04 এ কাজ করেছিল:

$ sudo service mongod start

1
দয়া করে ব্যাখ্যা করুন, আপনি কেন মনে করেন এটি অন্যের পক্ষেও কার্যকর হবে!
sauhardnc

1
প্রকৃত কারণ ব্যাখ্যা করা, আপনার কোডিং স্নিপেট এবং সমস্যাগুলি নির্মূল করার জন্য পদক্ষেপগুলি যুক্ত করার মতো আরও অন্তর্দৃষ্টি দিয়ে আরও বিশদে বিশ্লেষণ করুন দয়া করে in আরও তথ্যের জন্য স্ট্যাক ওভারফ্লো এর নির্দেশিকা দেখুন।
কপিল রঘুয়ানশি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.