ระบบไฟล์แบบอ่านอย่างเดียวเมื่อพยายาม mkdir / data / db บน Mac


114

ฉันพยายามสร้างโฟลเดอร์ใหม่ในไดเร็กทอรีหลัก

ลองใช้ทุกตัวอย่าง

sudo mkdir /data/db

sudo mkdir -p /data/db

ฉันรับไปเรื่อย ๆ

mkdir: / data: ระบบไฟล์แบบอ่านอย่างเดียว


1
stackoverflow.com/questions/58283257/…นี่ตอบคอมเมนต์ด้านล่าง
คามิลล์

คำตอบ:


157

หากคุณมี Mac และอัปเดตเป็น Catalina มากกว่าโฟลเดอร์รากจะไม่สามารถเขียนได้อีกต่อไป

ฉันเพิ่งเปลี่ยนไดเร็กทอรีที่อื่น

ตอนนี้ใช้คำสั่งนี้แล้ว

mongod --dbpath=/Users/user/data/db

4
มีวิธีทำให้ถาวรไหม ฉันต้องพิมพ์ทุกครั้งที่เริ่มเซิร์ฟเวอร์ MongoDB!
AV Paul

2
@AVPaul อาจไม่ใช่ทางออกที่ดีที่สุด แต่คุณสามารถสร้างนามแฝงที่อ้างถึงเส้นทางของคุณได้
DjangoBlockchain

1
@JeffGoes ฉันสมมติว่าคุณไม่ได้แทนที่ผู้ใช้ด้วยชื่อจริง
Aman

2
@AlexL มันทำงานให้ฉันด้วย แต่ฉันต้องพิมพ์ mongod --dbpath = / Users / my_USER_name / data / db ทุกครั้งที่ต้องการเรียกใช้ dev mongo db หรือไม่ เพราะครั้งต่อไปเมื่อฉันเรียกใช้ mongod มันขึ้นว่า / data / db not found
Shoeb Mirza

3
คุณสามารถทำให้ถาวรได้โดยการตั้งค่า dbPath ในไฟล์ config mongoDB หากคุณใช้ mac อยู่ภายใต้ /usr/local/etc/mongod.conf จากนั้นเพิ่มสิ่งต่อไปนี้: "storage: dbPath: path to your db directory"
Samoox

81

จากเอกสารอย่างเป็นทางการhttps://docs.mongodb.com/manual/tutorial/install-mongodb-on-os-x/

ติดตั้งhomebrewและรันคำสั่งต่อไปนี้

sudo chown -R $(whoami) $(brew --prefix)/*

แล้ว

brew tap mongodb/brew

แล้ว

brew install mongodb-community@4.2

และ

brew services start mongodb-community

หรือ

mongod --config /usr/local/etc/mongod.conf

แล้ว

ps aux | grep -v grep | grep mongod

และ

mongo

เพื่อตรวจสอบว่าคุณสามารถรันshow dbsใน mongo shell ได้


บริการชงเริ่ม mongodb-community => ข้อผิดพลาด: mongodb-communityไม่ได้ติดตั้งสูตร คุณต้องเปิดตัว: บริการชงเริ่ม mongodb/brew/mongodb-community@4.2
Andresse Njeungoue

20

ด้วยการอัปเดต macOS Catalina ใหม่โฟลเดอร์/data/dbจะกลายเป็นแบบอ่านอย่างเดียวคุณไม่สามารถแก้ไขได้ ทำตามขั้นตอนนี้เพื่อสร้างฐานข้อมูลในโฟลเดอร์อื่น:

  1. เปลี่ยนmongodไดเร็กทอรี:

    sudo mongod --dbpath /System/Volumes/Data/data/db

  2. ให้นามแฝงเพื่อใช้เป็นmongod:

    alias mongod="sudo mongod --dbpath /System/Volumes/Data/data/db"

  3. เพียงพิมพ์mongodเทอร์มินัลของคุณก็ควรใช้งานได้

พิเศษ => หากคุณต้องการให้สิทธิ์ผู้ใช้ในปัจจุบันให้ใช้รหัสบรรทัดนี้:

sudo chown -R $(whoami) /System/Volumes/Data/data/db

(สำหรับข้อมูล -> $(whoami)เป็นเพียงตัวแปรที่ส่งกลับผู้ใช้ปัจจุบันของคุณ)


1
ผมทำแบบนี้มาก่อนขั้นตอนที่ 1: &&sudo mkdir -p /System/Volumes/Data/data/db sudo chown -R `id -un` /System/Volumes/Data/data/dbไม่แน่ใจว่ามีโฟลเดอร์เหล่านี้อยู่แล้ว แต่รวมคำตอบของ @ xgqfrms เข้ากับโฟลเดอร์นี้ ขอบคุณมากสำหรับสิ่งนี้ทำให้ฉันแทบคลั่ง
twknab

11

เพื่อทำการเปลี่ยนแปลงเส้นทางของdbโฟลเดอร์mongod อย่างถาวร

ต่อไปนี้เอกสารเหล่านี้ที่พวกเขาพูดประมาณนี้ หาก mongod เริ่มต้นด้วยบริการชง:

$ brew services start mongodb-community@4.2

มันจะใช้ไฟล์ config ที่ path /usr/local/etc/mongod.conf


ในการแก้ไขปัญหานี้ให้แก้ไขไฟล์ config:

$ vim /usr/local/etc/mongod.conf

และเปลี่ยนdbPathเช่นเป็นโฮมไดเร็กทอรีของคุณดังนี้:

systemLog:
  destination: file
  path: /usr/local/var/log/mongodb/mongo.log
  logAppend: true
storage:
  dbPath: /Users/<username>/data/db
net:
  bindIp: 127.0.0.1 

บันทึกไฟล์และรีสตาร์ท mongod ด้วย brew:

$ brew services restart mongodb-community@4.2

1
สิ่งนี้ไม่ได้ผลสำหรับฉัน mongo ยังคงค้นหาใน / data / db
Xen_mar

@Xen_mar คุณพยายามเรียกใช้ mongod หลังจากแก้ไขไฟล์หรือไม่? เห็นได้ชัดว่า mongod ดำเนินการแล้วโดยเริ่มให้บริการเบียร์
JEC

5

ดังนั้นด้วย macOS Catalina Apple จึงสร้าง Volume ใหม่เพื่อความปลอดภัย หากคุณอยู่ใน MacOS Catalina คุณจะต้องสร้างโฟลเดอร์/data/dbSystem/Volumes/Data

ทำตามคำสั่งเหล่านี้

  1. sudo mkdir -p /System/Volumes/Data/data/db
  2. sudo chown -R id -un /System/Volumes/Data/data/db

เริ่ม MongoDB

  1. brew services run mongodb-community

  2. เพลิดเพลิน😉


4

คุณไม่สามารถสร้างโฟลเดอร์ในไดเรกทอรีรากบน Mac Catalina ได้อีกต่อไป!

https://www.apple.com/macos/catalina/features/

ไดรฟ์ข้อมูลระบบเฉพาะ

macOS Catalina ทำงานในไดรฟ์ข้อมูลระบบเฉพาะแบบอ่านอย่างเดียวซึ่งหมายความว่าแยกจากข้อมูลอื่น ๆ ทั้งหมดและช่วยปรับปรุงความน่าเชื่อถือของ macOS

# macOS Catalina, mkdir path
$ sudo mkdir -p /System/Volumes/Data/data/db

# give permissions
$ sudo chown -R `id -un` /System/Volumes/Data/data/db

# macOS 10.14.x -
$ sudo mkdir -p /data/db

# macOS 10.15.x +
$ sudo mkdir -p /System/Volumes/Data/data/db

อ้างอิง

https://discussions.apple.com/thread/250720711

https://zellwk.com/blog/install-mongodb/

https://www.youtube.com/watch?v=DX15WbKidXY


3

นี่คือสิ่งที่ใช้ได้ผลสำหรับฉันเนื่องจากฉันกำลังเรียนหลักสูตร Udemy: 1. ติดตั้ง HomeBrew โดยพิมพ์สิ่งนี้ลงในเทอร์มินัลของคุณ

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  1. ย้ายโฟลเดอร์ / data / db เก่าของคุณ (ถ้าคุณต้องการสำรองข้อมูล dbs ปัจจุบันของคุณ) ไปยังโฟลเดอร์ที่ไม่ใช่รูทและดำเนินการขั้นตอนต่อไป

  2. รันใน Terminal a) brew uninstall mongodb b) ถ้าจำเป็นให้รันbrew uninstall --force mongodb c) brew tap mongodb/brew d) brew install mongodb-community e)brew services start mongodb/brew/mongodb-community

  3. สิ่งที่คุณต้องมีตอนนี้คือเรียกใช้ mongo ใน Terminal แล้วคุณจะเห็นสัญลักษณ์ mongo shell>

โปรดแจ้งให้เราทราบหากใช้งานได้;) ฉันใช้เวลาเกือบ 2 ชั่วโมงในการคิดออกจากบทความนี้: /apple/362883/mongodb-doesnt-work-after-update-to -macos-catalina-10-15

ไชโย Radu


3

หากคุณใช้ Mac และประสบปัญหาคำสั่งด้านล่างมีประโยชน์ whoamiตัวแปรจะรับผู้ใช้ปัจจุบัน

mongod --dbpath=/Users/$(whoami)/data/db

3

เส้นทางเริ่มต้นสำหรับสูตรชุมชน mongodb

นอกเหนือจากการติดตั้งเซิร์ฟเวอร์ MongoDB และไบนารีของเครื่องมือแล้วสูตร mongodb-community ยังสร้าง:

  • ไฟล์กำหนดค่า: /usr/local/etc/mongod.conf
  • พา ธ ไดเร็กทอรีบันทึก: / usr / local / var / log / mongodb
  • พา ธ ไดเร็กทอรีข้อมูล: / usr / local / var / mongodb

แล้วมันก็ใช้ได้สำหรับฉัน:

mkdir -p usr/local/var/mongodb/data/db

2

คุณไม่สามารถสร้าง/data/ไดเร็กทอรี ที่สงวนไว้สำหรับระบบไฟล์ APFS ตรวจสอบบล็อกของ Bombichเกี่ยวกับปัญหานี้


ดังนั้นปัญหาไฟล์แบบอ่านอย่างเดียวนี้จะแก้ไขได้หรือไม่? ฉันมีปัญหาเดียวกัน
Zainab Hammami

2
ไม่คุณต้องใช้ชื่ออื่นสำหรับไดเรกทอรีของคุณ วิธีแก้ปัญหาที่เป็นไปได้คือการสร้างไดเร็กทอรีข้อมูลภายในไดเร็กทอรีอื่นซึ่งได้รับอนุญาตให้เป็นไดเร็กทอรีรูท
jvarela

2

ฉันทำอย่างนี้:

mkdir -p usr/local/var/mongodb/data/db

ตั้งแต่เส้นทางใหม่ที่เป็น "usr / local / var / mongodb"


2

ฉันกำลังสูญเสียสาเหตุที่ Apple ทำเช่นนั้น .. ตอนนี้เราไม่สามารถมีไดเรกทอรีระดับรากอื่น ๆ สิ่งนี้ไม่สมเหตุสมผลและผู้คนที่สร้างด้วยสิทธิ์ root โฟลเดอร์เหล่านั้นจะรู้ว่ากำลังทำอะไรอยู่


1

ด้วย macOS Catalina คุณจะไม่สามารถจัดเก็บไฟล์หรือข้อมูลในไดรฟ์ข้อมูลระบบแบบอ่านอย่างเดียวได้อีกต่อไปและไม่สามารถเขียนไปยังไดเร็กทอรี "root" (/) จากบรรทัดคำสั่งเช่นด้วย Terminal


1

หากต้องการเพิ่มสิ่งที่David Buck เขียนไว้ที่นี่ก่อนอื่นคุณต้องสร้างไดเร็กทอรีจริง คุณสามารถทำได้ด้วย:

sudo mkdir / ระบบ / ไดรฟ์ข้อมูล / ข้อมูล / ข้อมูล / db

หากคุณได้รับข้อผิดพลาดนี้:

"ข้อผิดพลาดในการแยกวิเคราะห์บรรทัดคำสั่ง: ตัวเลือกที่ไม่รู้จัก" --dbpath / System / Volumes / Data / data / db "ลอง" mongod --help "เพื่อดูข้อมูลเพิ่มเติม"

หลังจากสร้างนามแฝงนั่นเป็นเพียงเพราะ David Buck (ในขณะที่แสดงความคิดเห็นที่เป็นประโยชน์จริงๆ) พลาดช่องว่างในคำตอบของเขา

ในการแก้ไขปัญหานี้ให้พิมพ์

อูนาเลีย mongod

แล้วพิมพ์

นามแฝง mongod = "sudo mongod --dbpath / System / Volumes / Data / data / db"


ไม่ใช่ฉัน ... เครดิตควรไปที่Eugène Beliaev ฉันเพิ่งแก้ไขคำตอบสำหรับการจัดรูปแบบ ...
David Buck

0

Catalina เวอร์ชัน Mac ทำให้โฟลเดอร์รูทไม่สามารถเขียนได้อีกต่อไป

Brew มี mongodb เวอร์ชันอัปเดตเพื่อใช้เส้นทางใหม่ (ซึ่งสร้างขึ้นเอง) /usr/local/var/mongodbและทำตามคำแนะนำเหล่านี้จะช่วยแก้ปัญหาได้:

คำแนะนำในการติดตั้ง mongodb-community-edition ที่อัปเดต

brew install mongodb-community@VERSION โดยที่เวอร์ชันแรกที่มีการแก้ไขคือ 4.2


0

ฉันสร้างส่วนสำคัญด้วยขั้นตอนง่ายๆในการติดตั้งและเรียกใช้ mongodb บน catalina

# install homebrew (https://brew.sh/) and run the following commands
sudo chown -R $(whoami) $(brew --prefix)/*
brew tap mongodb/brew
brew install mongodb-community@4.2

## --- aliases to set in your zshrc file

# open your zshrc file
open ~/.zshrc
# copy and paste shorcuts in the end of the file
alias mongod='brew services run mongodb-community'
alias mongod-start='brew services start mongodb-community' #will start MongoDB automatically when you login into your Macbook
alias mongod-status='brew services list'
alias mongod-stop='brew services stop mongodb-community'

# restart your terminal
# type mongod in your terminal for run service & mongod-stop for finish it
# test your mongodb connection with
mongo
show dbs

https://gist.github.com/sturmenta/cf19baa91b1d79d8ae2b305fb7e1f799

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