Mongod บ่นว่าไม่มีโฟลเดอร์ / data / db


474

ฉันใช้แม็คเครื่องใหม่เป็นครั้งแรกในวันนี้ ฉันทำตามคำแนะนำการเริ่มต้นใช้งานบน mongodb.org จนถึงขั้นตอนที่สร้างไดเรกทอรี / data / db btw ฉันใช้เส้นทาง homebrew

ดังนั้นฉันจึงเปิดเทอร์มินัลและฉันคิดว่าฉันเป็นสิ่งที่คุณเรียกว่า Home Directory เพราะเมื่อฉัน "ls" ฉันเห็นโฟลเดอร์ของ Desktop Application ภาพยนตร์เพลงรูปภาพเอกสารและห้องสมุด

ดังนั้นฉันจึงทำ

mkdir -p /data/db

ก่อนจะกล่าวว่าได้รับอนุญาตถูกปฏิเสธ ฉันพยายามทำสิ่งต่าง ๆ เป็นเวลาครึ่งชั่วโมงและในที่สุด

mkdir -p data/db

ทำงาน และเมื่อฉัน "ls" ไดเรกทอรีของข้อมูลและซ้อนในนั้นจะมีโฟลเดอร์ db อยู่

จากนั้นฉันก็โกรธขึ้นและมันก็บ่นว่าไม่ได้หาข้อมูล / db

ฉันทำอะไรผิดหรือเปล่า?

ตอนนี้ฉันได้ทำ

sudo mkdir -p /data/db

และเมื่อฉันทำ "ls" ฉันเห็น data dir และ db dir ข้างใน db dir ไม่มีอะไรในนั้นเลยและตอนนี้ฉันก็ใช้ mongod

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

ขอบคุณทุกคน!


1
"อาร์กิวเมนต์ไม่ถูกต้อง" หมายความว่าชื่อสัญลักษณ์สำหรับผู้ใช้ mongo นั้นแตกต่างกันในระบบของคุณ - คุณอาจใช้แพ็คเกจอื่นหรือกลไกการติดตั้งเพื่อติดตั้ง MongoDB คุณควรตรวจสอบของคุณ / etc / passwd และ / etc / กลุ่มแฟ้มสำหรับชื่อสัญลักษณ์ (หรือ UID / GID) grep mongo /etc/passwd /etc/groupของผู้ใช้ ls -ld /var/lib/mongoหากไม่ได้ทำงานตรวจสอบชื่อโดยการตรวจสอบการใช้ของไดเรกทอรี หรือเพื่อดู uid / การ GID ls -lnd /var/lib/mongoทำเช่นนี้: ในกรณีของฉันdrwxr-xr-x. 6 *487 480* 4096 Sep 20 2011 ...- นี่หมายถึงใช้ 487: 480 เป็นพารามิเตอร์
Tilo

การใช้ UID / GID นั้นมีความหมายเหมือนกันกับการใช้ชื่อสัญลักษณ์ เช่นเพียงแทนที่ 'mongod: mongod กับ uid / การหมายเลข GID คุณพบกับวิธีการข้างต้น ..
Tilo

ตอนนี้เรารู้วิธีเพิ่มไดเรกทอรีนี้อย่างถูกต้อง (data / db) แล้วทำไมไดเรกทอรีนี้จึงไม่รวมอยู่ในการติดตั้งตั้งแต่แรก
winux

หากคุณเพิ่งอัพเกรดเป็น MacOS 10.15 คำตอบนี้อาจช่วยได้: stackoverflow.com/questions/58283257/…
Adam Zerner

หากคุณมี MAC เวอร์ชันล่าสุด: ด้วยการอัพเดต macOS Catalina ใหม่โฟลเดอร์ "/ data / db" จะกลายเป็นแบบอ่านอย่างเดียวคุณจะไม่สามารถแก้ไขได้ ทำตามขั้นตอนนี้เพื่อสร้างฐานข้อมูลในโฟลเดอร์อื่น: 1) เปลี่ยนไดเรกทอรี mongod: sudo mongod --dbpath / System / Volumes / Data / data / db 2) ให้นามแฝง: alias mongod = "sudo mongod --dbpath / System / ปริมาณ / ข้อมูล / data / db "
Farbod Aprin

คำตอบ:


636

คุณสร้างไดเรกทอรีผิดที่

/ data / db หมายความว่ามันอยู่ภายใต้ไดเรกทอรี '/' รากโดยตรงในขณะที่คุณสร้าง 'data / db' (โดยไม่ต้องนำหน้า /) อาจอยู่ในไดเรกทอรีอื่นเช่น homedirectory '/ root'

คุณต้องสร้างไดเรกทอรีนี้เป็นรูท

ไม่ว่าคุณจะต้องการใช้sudoเช่นsudo mkdir -p /data/db

หรือคุณต้องทำsu -เพื่อเป็น superuser แล้วสร้างไดเรกทอรีด้วยmkdir -p /data/db


บันทึก:

MongoDB ยังมีตัวเลือกที่คุณสามารถสร้างไดเรกทอรีข้อมูลในตำแหน่งอื่นได้ แต่โดยทั่วไปก็ไม่ใช่ความคิดที่ดีเพราะมันมีความซับซ้อนเล็กน้อยเช่นการกู้คืนฐานข้อมูลเพราะคุณต้องระบุ db-path ด้วยตนเอง ฉันจะไม่แนะนำให้ทำเช่นนั้น


แก้ไข:

ข้อผิดพลาดที่คุณได้รับคือ"ไม่สามารถสร้าง / แฟ้มล็อคแบบเปิด: /data/db/mongod.lock errno: 13 ได้รับอนุญาต" ดูเหมือนว่าไดเรกทอรีที่คุณสร้างขึ้นจะไม่ได้รับสิทธิ์และความเป็นเจ้าของที่ถูกต้อง แต่จะต้องสามารถเขียนได้โดยผู้ใช้ที่ใช้กระบวนการ MongoDB

ในการดูการอนุญาตและความเป็นเจ้าของของไดเรกทอรี '/ data / db /' ให้ทำดังนี้: (นี่คือสิ่งที่สิทธิ์และความเป็นเจ้าของควรมีลักษณะ)

$ 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' ของคุณไม่มีสิทธิ์และความเป็นเจ้าของด้านบนให้ทำดังนี้:

ก่อนอื่นให้ตรวจสอบว่าผู้ใช้และกลุ่มผู้ใช้ mongo ของคุณคืออะไร:

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

คุณควรมีรายการสำหรับ mongod ใน / etc / passwd เนื่องจากเป็น daemon

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 เป็นบัญชีที่มีเปลือกเข้าสู่ระบบ Daemons ไม่ควรมีเชลล์เพื่อเหตุผลด้านความปลอดภัยนั่นคือเหตุผลที่คุณเห็น / bin / false ใน grep ของไฟล์รหัสผ่านด้านบน

ตรวจสอบที่นี่เพื่อทำความเข้าใจความหมายของการอนุญาตไดเรกทอรีให้ดียิ่งขึ้น:

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

อาจลองดูบทเรียนที่คุณสามารถค้นหาได้ทาง Google: "UNIX สำหรับผู้เริ่มต้น"


2
ลองทำls -ld /data/ และls -ld /data/db/.. คุณจะเห็นสิทธิ์ไดเรกทอรีแสดงอยู่ทางด้านซ้ายแล้วความเป็นเจ้าของแล้วชื่อไดเรกทอรี คุณควรตรวจสอบให้แน่ใจว่าไดเรกทอรีนั้นสามารถเขียนได้โดย user-id ซึ่งรัน MongoDB

2
@Tilo ใช่ฉันได้ทำพวกเขา คนแรก chmod ก็โอเคคนที่สองพูดว่า "chown: mongod: การโต้เถียงที่ไม่ถูกต้อง"
Nik So

3
นี่คือหัวข้อทั้งหมดเป็นสิ่งที่ฉันจะผ่าน แต่ฉันก็ดูเหมือนจะไม่เข้าใจว่า user-id และ group-id ของ mongo นั้นอยู่ในระบบของฉันหรือไม่พบเอกสารใด ๆ ฉันติดอยู่ที่ chong mongod: mongod ส่วนหนึ่งกลับมาinvalid arguement
Trip

10
ปรับปรุงฉันไปกับและsudo touch /data/db/mongod.lock sudo chmod 0777 /data/db/mongd.lockเธอเริ่มต้นขึ้น
เดินทาง

141
เล่นsudo chown -R `id -u` /data/dbหรือsudo chown -R $USER /data/dbแทนsudo chown mongod:mongod /data/dbได้เคล็ดลับสำหรับฉัน
heitortsergent

117

หลังจากได้รับข้อผิดพลาดเดียวกันกับ Nik

chown: id -u: อาร์กิวเมนต์ไม่ถูกต้อง

ฉันพบว่าสิ่งนี้เกิดขึ้นจากการใช้เครื่องหมายคำพูดผิดประเภท (ควรเป็นbackquotes ) ฟอรัมของ Ubuntu

แต่ฉันเพิ่งใช้

sudo chown $ USER / data / db

เป็นทางเลือกและตอนนี้ mongod มีสิทธิ์ที่ต้องการ


4
หากใครบางคนพบว่ามีประโยชน์: ฉันมีปัญหาเดียวกัน แต่ข้อผิดพลาดแตกต่างกันเล็กน้อย (กล่าวว่ากลุ่ม 'mongod' ไม่มีอยู่เมื่อฉันลอง chown mongod: mongod) -> อย่างไรก็ตามการใช้ chown $ USER ทำงานให้ ฉันขอบคุณ ...
trainoasis

6
ฉันต้องเพิ่ม -R ในสิ่งนี้ "sudo chown -R $ USER / data / db"
Kevin

1
คำตอบที่สมบูรณ์แบบสำหรับมือใหม่
Pyae Sone

90

มันใช้งานได้สำหรับฉันที่พบในความคิดเห็น:

sudo chown -R $USER /data/db

2
สำหรับฉันด้วย การติดตั้ง mongo ผ่าน homebrew บน OSX ของฉันไม่ได้เพิ่มผู้ใช้และกลุ่ม mongod
Zauker

73

สร้างโฟลเดอร์

sudo mkdir -p /data/db/

ให้สิทธิ์กับตัวคุณเองในโฟลเดอร์

sudo chown `id -u` /data/db

จากนั้นคุณสามารถทำงานได้โดยไม่ต้องmongod sudoทำงานบน OSX Yosemite


1
แทนที่จะสร้างไดเรกทอรีใหม่ลองเริ่มบริการ mongod ใหม่ เช่น: - บริการ mongod เริ่มใหม่
Devendra Bhat

bogdanmac:~ iliebogdanbarbulescu$ sudo chown `id -u` /data/db chown: /data/db: No such file or directory
bibscy

32

เพื่อแก้ไขข้อผิดพลาดนั้นใน OS X ฉันเริ่มต้นใหม่และหยุดบริการ: $ brew services restart mongodb $ brew services stop mongodb

จากนั้นฉันก็วิ่งmongod --config /usr/local/etc/mongod.confและปัญหาก็หายไป

ข้อผิดพลาดดูเหมือนจะเกิดขึ้นหลังจากอัพเกรดแพ็คเกจ homebrew MongoD


23

การติดตั้งผ่านการชงบน Mac โดยที่ 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

@MarkusWMahlberg ขอบคุณสำหรับสิ่งนั้น มันเป็นหนึ่งในสิ่งที่รู้สึกแปลก ๆ แต่ทำงานได้ ดังนั้นใครควรเป็นเจ้าของและกลุ่มของไฟล์นั้น
Gal Bracha

ขึ้นอยู่กับการกระจายของคุณ ดู/etc/passwdชื่อผู้ใช้ - กลุ่มมีแนวโน้มที่จะเหมือนกัน มันมักจะเป็นอย่างใดอย่างหนึ่งหรือmongo mongodb
Markus W Mahlberg

@MarkusWMahlberg ตกลง - ตอนนี้ฉันคงแล้ว - เมื่อติดตั้งผ่านการชงมันไม่ได้สร้างผู้ใช้และกลุ่มดังนั้นฉันเพิ่งตั้งเป็นชื่อผู้ใช้ของฉันเอง ดูว่าตอนนี้ปลอดภัยกว่าหรือไม่ ขอบคุณ
Gal Bracha

ขอบคุณ เมื่อพัฒนาบน mac ด้วย brew สิ่งนี้จะแก้ไขปัญหาได้ ไม่จำเป็นต้องมีความปลอดภัยมากขึ้นถ้าคุณเพียงแค่ใช้ข้อมูลทดสอบใน mongodb @MarkusWMahlberg บน OS X ผู้ใช้ที่ใช้ mongod คือ YOUR_USER_NAME หากคุณเพิ่งเริ่มต้นด้วย "mongod &"
แก็ปปาร์ด

22

หากคุณเรียกใช้ mongo โดยไม่มีข้อโต้แย้งจะถือว่าคุณกำลังใช้งานบนเครื่องผลิตดังนั้นจึงใช้ตำแหน่งเริ่มต้น

สำหรับการใช้ฐานข้อมูลของคุณเอง (dev หรือเพียงอันอื่น):

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

สิ่งนี้อธิบายได้หรือไม่ว่าทำไมจึงไม่ใช้การตั้งค่าที่ประกาศไว้ใน /etc/mongod.conf มีปัญหากับการติดตั้ง 3.6.5 บน Ubuntu 16.04
ดาร์กสตาร์ 1

พยายามที่จะเริ่มในโหมด verbose (-v) หรือบังคับให้ config ชัดเจน ( --config ): docs.mongodb.com/manual/reference/program/mongod หากคุณติดตั้งโดยใช้ apt-get start ด้วยสถานะ mongod ของบริการ / stop
loreii

ฉันได้ดูบันทึกของ mongo ทั้งหมดนี้ยังคงบอกวิธีการที่ขาดไดเรกทอรี / data / db ป้องกันการเริ่มต้น ในที่สุดก็เจอคำตอบของคุณและดูเหมือนว่าจะเป็นสาเหตุของปัญหา?
ดาร์กสตาร์ 1

นอกจากนี้ยังใช้งานได้เมื่อใช้ MongoDB ใน Linux-Subsystem บน Windows ซึ่งไม่สามารถสร้าง / data / db ที่ fs root ได้
hiergiltdiestfu

8

ฉันมีปัญหานี้กับการติดตั้ง Mongodb ที่มีอยู่ ฉันยังไม่แน่ใจว่าทำไมมันเกิดขึ้น แต่ด้วยเหตุผลบางอย่างกระบวนการ Mongod ไม่พบไฟล์ mongod.config เนื่องจากไม่พบไฟล์กำหนดค่าจึงพยายามค้นหาไฟล์ DB ใน / data / db ซึ่งเป็นโฟลเดอร์ที่ไม่มีอยู่ อย่างไรก็ตามไฟล์กำหนดค่ายังคงมีอยู่ดังนั้นฉันจึงตรวจสอบว่ากระบวนการมีสิทธิ์ในไฟล์กำหนดค่าและเรียกใช้กระบวนการ mongod ด้วยแฟล็ก --config ดังนี้:

mongod --config /etc/mongod.conf

ในไฟล์ปรับแต่งเองฉันมีการตั้งค่านี้:

storage:
  dbPath: /var/lib/mongodb

และนี่คือวิธีที่กระบวนการสามารถค้นหาโฟลเดอร์ฐานข้อมูลจริงอีกครั้ง


1
ฉันยืนยันว่ามันเกิดขึ้นกับฉัน แทนที่จะเป็นไฟล์ปรับแต่งเราสามารถตั้งค่า --dbpath = / var / lib / mongodb ฉันว่าฉันทำข้อมูลของฉันหาย แต่ยังอยู่ในนั้น
lenhhoxung

8

ฉันทำ

brew install mongodb

ใน 2018-02-01 และนั่นทำให้ฉันมีmongodbรุ่น 3.6.2

พร้อมรับคำตอบจาก orlukeด้านบนฉันพยายามแค่

$ brew services restart mongodb

และทุกสิ่งที่เกิดขึ้นในชีวิต mongoose.createConnection()สายของฉันทำในสิ่งที่ฉันต้องการ GUI MongoDB เข็มทิศรุ่นชุมชนจะเชื่อมต่อ ฉันใช้เข็มทิศเพื่อดูlocal.startup_logชุดสะสม นั่นมีเอกสารหนึ่งฉบับบันทึกของฉันเพิ่งเริ่มให้บริการ mongoDB และนั่นก็คือ

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ไดเรกทอรีที่มีไฟล์คลุมเครือมากมาย ดังนั้นดูเหมือนว่าจะเป็นวิธีการติดตั้งทำงานในขณะนี้

ฉันไม่แน่ใจว่าbrew services restartจะให้บริการทำงานเมื่อเข้าสู่ระบบหรือไม่ ดังนั้นฉันทำ

brew services stop mongodb
brew services start mongodb

และหวังว่าจะเริ่มต้นอีกครั้งหลังจากรีบูต และแน่นอนมันทำ อันที่จริงตอนนี้ฉันคิดว่าสิ่งที่ถูกต้องที่จะทำหลังจากการติดตั้งครั้งแรกคือ

brew services start mongodb

และควรเริ่มบริการและรีสตาร์ทหลังจากรีบูต


การปรับปรุง 2020: docs.mongodb.com/manual/tutorial/install-mongodb-on-os-x
apollo

7

คำสั่งของคุณจะสร้างโครงสร้างไดเรกทอรีในโฟลเดอร์ปัจจุบันไม่ใช่ไดเรกทอรีรากของคอมพิวเตอร์ของคุณ (ซึ่งเป็นสิ่งที่ขาดหายไป/)

คำสั่งแรกถูกต้อง แต่เนื่องจากคุณพยายามสร้างโฟลเดอร์/ซึ่งเป็นไดเรกทอรีที่ได้รับการป้องกันคุณต้องนำหน้าด้วยsudoซึ่งย่อมาจาก "superuser do" คุณจะถูกขอรหัสผ่านของคุณ

ดังนั้นคำสั่งเต็มจะเป็น:

$ sudo mkdir -p /data/db

6

คุณต้องสร้าง/ data / db ... นั่นคือไดเร็กทอรีที่เรียกว่า/ data /ในรูทของคุณ (เช่น/ ) และโฟลเดอร์ย่อยที่เรียกว่า/ db / ...

คุณได้รับข้อผิดพลาดในการอนุญาตเนื่องจากคุณต้องใช้sudoเพื่อสร้าง direcotry ใน root dir ของคุณใน MacOS sudo ช่วยให้คุณเรียกใช้คำสั่งในฐานะผู้ดูแลระบบ

ดังนั้นให้เรียกใช้สิ่งนี้แทน ...

$ sudo mkdir -p /data/db

นี่จะให้คุณใส่รหัสผ่านซึ่งเป็นรหัสผ่านเดียวกันกับที่คุณใช้เพื่อเปลี่ยนการตั้งค่าระบบ (กล่องโต้ตอบเล็ก ๆ ที่เปิดขึ้นเมื่อคุณลองและเปลี่ยนแปลงสิ่งต่าง ๆ ในการตั้งค่าระบบเพื่อดูตัวอย่าง) และเป็นไปได้เช่นเดียวกับที่คุณใช้ล็อกอิน


6

คุณกำลังพยายามสร้างไดเรกทอรีที่คุณไม่สามารถเข้าถึงรูทได้

สำหรับการทดสอบ mongodb ฉันใช้ไดเรกทอรีจากไดเรกทอรีผู้ใช้ของฉันเช่น:

cd
mkdir -p temp/
mongod --dbpath .

สิ่งนี้จะทำให้ฐานข้อมูล Mongo ใน temp / จากไดเรกทอรีการทำงานปัจจุบันของคุณ


6

ฉันพบปัญหาเดียวกันนี้โดยการสร้างโฟลเดอร์ / data / db ด้วยโปรแกรมจัดการหน้าต่าง ฉันพยายามทำแม้ว่าเทอร์มินัลในตอนแรกและเพื่อสร้างโฟลเดอร์ในไดเรกทอรีรากฉันต้องใช้ sudo

ฉันเพิ่งไปที่ไดเรกทอรีรากโดยใช้ Finder และสร้างโฟลเดอร์ใหม่โดยใช้ 'โฟลเดอร์ใหม่' ทำงานให้ฉันโดยสิ้นเชิง

หมายเหตุ: ฉันใช้ OSX


5

เพียงบันทึกย่อ:

หากคุณลองใช้ mongod โดยไม่เปลี่ยนสิทธิ์ก่อนคุณอาจมีไฟล์ mongod.lock (และไฟล์อื่น ๆ ) ในไดเรกทอรี / data / db แม้หลังจากที่คุณเปลี่ยนการอนุญาตสำหรับไดเรกทอรี / data / db เพื่อให้สามารถเข้าถึง $ USER ของคุณคุณจะยังคงได้รับ "ไม่สามารถสร้าง / เปิดไฟล์ล็อค: /data/db/mongod.lock errno: 13 การอนุญาตถูกปฏิเสธ "ผิดพลาด รัน ls -al / data / db และคุณอาจเห็นว่าการอนุญาตสำหรับไฟล์แต่ละไฟล์ยังคงถูกตั้งค่าเป็นรูทสำหรับผู้ใช้ไม่ใช่ $ USER ของคุณ คุณควรลบไฟล์ mongod.lock และอื่น ๆ ด้วย จากนั้นเมื่อคุณเรียกใช้ mongod อีกครั้งทุกอย่างจะทำงานได้และคุณสามารถตรวจสอบว่าสิทธิ์ของไฟล์ตรงกับการอนุญาตของไดเรกทอรีโดยการรัน ls -al อีกครั้ง


นี่เป็นบันทึกที่ดี ฉันไม่มีไฟล์ล็อค แต่ฉันต้องการเปลี่ยนเจ้าของข้อมูลและโฟลเดอร์ db ของฉัน
Caranicas

5

สร้างไดเรกทอรีในรูท

sudo mkdir -p /data/db

ตอนนี้เปลี่ยนเจ้าของ

sudo chown -R $USER /data

คุณดีไปแล้ว!

mongod

แทนที่จะใช้sudo mongodคุณไม่จำเป็นต้องใส่รหัสผ่านทุกครั้ง แต่สำหรับโครงการจริงที่คุณควรใช้sudo mongodอย่าให้สิทธิ์ผู้ใช้ปกติ!


4

ฉันยังคงได้รับข้อผิดพลาดต่อไปนี้เมื่อฉันพยายามเริ่ม mongodb

"shutting down with code:100" 

ฉันใช้คำสั่งต่อไปนี้:

./mongod --dbpath=~/mongo-data

การแก้ไขสำหรับฉันคือฉันไม่ต้องการเครื่องหมาย "=" และนี่เป็นสาเหตุของข้อผิดพลาด ดังนั้นฉันทำ

./mongod --dbpath ~/mongo-data

แค่อยากจะโยนมันออกไปเพราะข้อผิดพลาดไม่ได้ระบุว่านี่เป็นปัญหา ฉันเกือบจะลบเนื้อหาของไดเรกทอรี ~ / mongo-data เพื่อดูว่าสิ่งนั้นช่วยได้หรือไม่ ดีใจที่ฉันจำได้ว่าบางครั้ง cli args ไม่ใช้เครื่องหมาย "="


3

จนถึงวันนี้ฉันยังเคยคิดว่าเราจำเป็นต้องสร้างโฟลเดอร์ / data / db สำหรับการเริ่มต้นคำสั่ง mongod

แต่เมื่อไม่นานมานี้ฉันพยายามเริ่ม mongod ด้วยคำสั่งบริการและมันก็ใช้ได้กับฉันและไม่จำเป็นต้องสร้างไดเรกทอรี / data / db

service mongod start

ในการตรวจสอบสถานะของ mongod คุณสามารถเรียกใช้คำสั่งต่อไปนี้

service mongod status

3

วิธีนี้แก้ปัญหาของฉัน

  1. ทำไดเรกทอรีเป็น

    sudo mkdir -p / data / db

  2. ที่จะทำให้ไดเรกทอรีชื่อเป็น db และลองเริ่มต้นด้วยคำสั่ง

    sudo mongod

หากคุณได้รับข้อผิดพลาดหรือปัญหาอื่นจากการเริ่มต้น mongod คุณอาจพบปัญหาว่า

ไม่สามารถตั้งค่าผู้ฟัง: SocketException: ที่อยู่ที่ใช้งานอยู่หากคุณพบว่ามีข้อผิดพลาดมากกว่าที่คุณต้องฆ่ากระบวนการทำงานของ Mongo โดยพิมพ์ไปที่เทอร์มินัล

ps ax | grep mongod
sudo kill ps_number

และค้นหาพอร์ต mongod ที่ใช้งานและฆ่ากระบวนการ อีกวิธีหนึ่งคือการสร้างพอร์ต specefic เมื่อเริ่มต้น mongod เป็น

sudo mongod --port 27018

2

พิมพ์ "id" บนเทอร์มินัลเพื่อดูรหัสผู้ใช้ที่คุณสามารถให้ได้แล้วพิมพ์

"sudo chown -R idname / data / db"

สิ่งนี้ได้ผลสำหรับฉัน! หวังว่านี่จะช่วยแก้ปัญหาของคุณได้


2

ใน MongoDB รุ่นปัจจุบันมากขึ้นฉันมี 3.2.10 มันถูกเก็บไว้เป็นค่าเริ่มต้น

/var/lib/mongodb


1
ความmongod --dbpath /var/lib/mongodbช่วยเหลือในการทำงานในสถานการณ์เหล่านี้
santiago arizti

1

หลังจาก (ใหม่) - การติดตั้งแพคเกจเครื่องมือฉันมีข้อผิดพลาดคล้ายกันในอุปกรณ์ Windows 10;

ข้อยกเว้นใน initAndListen: NonExistentPath: ไดเรกทอรีข้อมูล C: \ data \ db \ ไม่พบ, กำลังยกเลิก

โซลูชัน แบบอะนาล็อกเป็นตามที่อธิบายไว้สำหรับระบบ linux เพียงแค่ทำให้โฟลเดอร์เพียงพอที่จะเริ่มmongod.exe(เซิร์ฟเวอร์ mongoDB)

คิดว่าฉันจะทิ้งไว้ให้คนที่จบด้วยคำค้นหาเดียวกันบนอุปกรณ์ Windows


1

ฉันแค่อยากจะชี้ให้เห็นที่นี่ว่าถ้าคุณลองนี้และคุณทำงานเป็นmkdir: /data/db: Read-only file systemโปรดดูความคิดเห็นนี้ซึ่งช่วยให้ฉัน: https://stackoverflow.com/a/58895373

ด้วยวิธีนี้ถ้าใครอยู่ในคำตอบนี้และควบคุม F สำหรับ "อ่านอย่างเดียว" พวกเขาจะเห็นสิ่งนี้


0

มีวิธีโง่จริงๆในการสร้างปัญหานี้ซึ่งฉันเป็นผู้บุกเบิก:

1) ปล่อยให้ mongo ติดตั้งอยู่ครู่หนึ่ง 2) กลับมาและเซิร์ฟเวอร์ไม่ทำงาน 3) พยายามเริ่มทำงาน แต่อย่าใช้ sudo ในเวลานี้ 4) mongo ไม่สามารถหาข้อมูล / db / เพราะตอนนี้มันกำลังมองหาอยู่ ผู้ใช้ home dir แทน su home dir

ใช่มันโง่จริงๆ แต่ถ้านานมาแล้วที่คุณอยู่ในระบบมันสามารถเดินทางไปกับคุณได้

คำตอบสั้น ๆ : ให้แน่ใจว่าคุณใช้ mongo ด้วยโฮมไดเร็กตอรี่เดียวกัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.