Hệ thống tệp chỉ đọc khi thử mkdir / data / db trên Mac


106

Tôi đang cố gắng tạo một thư mục mới trong thư mục chính

Đã thử tất cả các loại ví dụ

sudo mkdir /data/db

sudo mkdir -p /data/db

Tôi tiếp tục nhận được

mkdir: / data: Hệ thống tệp chỉ đọc


1
stackoverflow.com/questions/58283257/… Điều này trả lời các nhận xét bên dưới.
camille

Câu trả lời:


142

Nếu bạn có Mac và cập nhật lên Catalina thì thư mục gốc không còn có thể ghi được nữa.

Tôi vừa thay đổi thư mục ở một nơi khác.

Hiện đang sử dụng lệnh này

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

4
Có cách nào để làm cho nó tồn tại vĩnh viễn không? Tôi phải gõ nó mỗi khi khởi động máy chủ MongoDB!
AV Paul

2
@AVPaul Có thể không phải là giải pháp tốt nhất, nhưng bạn có thể tạo một bí danh đề cập đến đường dẫn của bạn.
DjangoBlockchain

1
@JeffGoes Tôi giả định rằng bạn đã không thay thế người dùng bằng tên thực.
Aman

2
@AlexL Nó cũng làm việc cho tôi. Nhưng tôi có phải nhập mongod --dbpath = / Users / my_USER_name / data / db mỗi khi tôi muốn chạy dev mongo db của mình không? Bởi vì lần tới khi tôi chạy mongod, nó sẽ thông báo / data / db not found
Shoeb Mirza

3
bạn có thể đặt nó vĩnh viễn bằng cách đặt dbPath trong tệp cấu hình mongoDB nếu bạn đang sử dụng mac, nó nằm trong /usr/local/etc/mongod.conf. sau đó thêm phần sau: "storage: dbPath: path to your db directory"
Samoox

76

từ tài liệu chính thức https://docs.mongodb.com/manual/tutorial/install-mongodb-on-os-x/

cài đặt homebrew và chạy các lệnh sau

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

sau đó

brew tap mongodb/brew

sau đó

brew install mongodb-community@4.2

brew services start mongodb-community

hoặc là

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

sau đó

ps aux | grep -v grep | grep mongod

mongo

để xác minh bạn có thể chạy show dbstrong trình bao mongo


16

Với bản cập nhật macOS Catalina mới, thư mục /data/dbsẽ trở thành chỉ đọc, bạn không thể sửa đổi nó. Làm theo quy trình này để tạo DB trong một thư mục khác:

  1. Thay đổi mongodthư mục:

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

  2. Đặt cho nó một bí danh để sử dụng nó như mongod:

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

  3. Chỉ cần nhập mongodthiết bị đầu cuối của bạn, nó sẽ hoạt động.

Thêm => Nếu bạn cần cấp cho nó quyền người dùng hiện tại, hãy sử dụng dòng mã này:

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

(Chỉ để biết thông tin -> $(whoami)chỉ là một biến trả về người dùng hiện tại của bạn)


11

Để thực hiện thay đổi vĩnh viễn đường dẫn của dbthư mục mongod .

Sau những tài liệu này, họ nói đại khái điều này. Nếu mongod được bắt đầu với dịch vụ bia:

$ brew services start mongodb-community@4.2

Nó sẽ sử dụng tệp cấu hình tại đường dẫn /usr/local/etc/mongod.conf


Để khắc phục điều này, hãy chỉnh sửa tệp cấu hình:

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

Và thay đổi dbPathví dụ thành thư mục chính của bạn như sau:

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 

Lưu tệp và khởi động lại mongod với brew:

$ brew services restart mongodb-community@4.2

1
điều này không hiệu quả với tôi, mongo vẫn đang tìm kiếm / data / db
Xen_mar

@Xen_mar có phải bạn đang cố chạy mongod sau khi chỉnh sửa tệp không? Rõ ràng mongod đã được chạy bởi dịch vụ bia bắt đầu
JEC

3

Đây là những gì đã làm việc cho tôi khi tôi đang trải qua một khóa học Udemy: 1. Cài đặt HomeBrew bằng cách nhập nó vào thiết bị đầu cuối của bạn

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  1. Di chuyển thư mục / data / db cũ của bạn (nếu bạn muốn sao lưu dbs hiện tại của mình) vào một thư mục không phải gốc và tiến hành bước tiếp theo

  2. Chạy trong Terminal a) brew uninstall mongodb b) Nếu cần chạy brew uninstall --force mongodb c) brew tap mongodb/brew d) brew install mongodb-community e)brew services start mongodb/brew/mongodb-community

  3. Tất cả những gì bạn cần bây giờ là chạy mongo trong Terminal và bạn sẽ thấy biểu tượng mongo shell>.

Vui lòng cho tôi biết nếu điều này hoạt động;) Tôi đã mất gần 2 giờ để tìm ra nó, dựa trên bài viết này: /apple/362883/mongodb-doesnt-work- after-update-to -macos-catalina-10-15

Chúc mừng, Radu


3

Nếu bạn đang sử dụng mac và gặp sự cố thì lệnh dưới đây rất hữu ích, whoamibiến sẽ lấy người dùng hiện tại

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

3

Vì vậy, với macOS Catalina, Apple đã tạo một Khối lượng mới cho mục đích bảo mật. Nếu bạn đang sử dụng macOS Catalina, bạn sẽ cần tạo /data/dbthư mục trong System/Volumes/Data.

Làm theo các lệnh này

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

Khởi động MongoDB

  1. brew services run mongodb-community

  2. Hãy tận hưởng


3

Đường dẫn mặc định cho Công thức cộng đồng mongodb

Ngoài việc cài đặt máy chủ MongoDB và các tệp nhị phân công cụ, công thức mongodb-community tạo ra:

  • tệp cấu hình: /usr/local/etc/mongod.conf
  • đường dẫn thư mục nhật ký: / usr / local / var / log / mongodb
  • đường dẫn thư mục dữ liệu: / usr / local / var / mongodb

sau đó nó làm việc cho tôi:

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

2

Bạn không thể tạo thư mục trên thư mục gốc trên Mac Catalina nữa!

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

Khối lượng hệ thống chuyên dụng

macOS Catalina chạy trong một khối lượng hệ thống chỉ đọc, chuyên dụng - có nghĩa là nó hoàn toàn tách biệt với tất cả các dữ liệu khác và giúp cải thiện độ tin cậy của 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

refs

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

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

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



1

Với macOS Catalina, bạn không còn có thể lưu trữ tệp hoặc dữ liệu trong ổ đĩa hệ thống chỉ đọc, cũng như không thể ghi vào thư mục "gốc" (/) từ dòng lệnh, chẳng hạn như với Terminal.


1

Bạn không thể tạo một /data/thư mục. Điều đó được dành riêng cho hệ thống tệp APFS. Kiểm tra blog của Bombich về vấn đề này.


Vì vậy, vấn đề tệp chỉ đọc này có thể được giải quyết không? Tôi có cùng một vấn đề
Zainab Hammami

2
Không, bạn cần sử dụng tên khác cho danh bạ của mình. Một giải pháp khả thi có thể là tạo thư mục dữ liệu bên trong một thư mục khác được phép làm thư mục gốc.
jvarela

1

Tôi đã làm điều này:

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

kể từ đường dẫn mới là "usr / local / var / mongodb".


1

Tôi không hiểu tại sao Apple lại làm như vậy .. Vì vậy, bây giờ, chúng tôi không thể có bất kỳ thư mục cấp gốc nào ngoài thư mục của họ? Điều này không có ý nghĩa gì và những người tạo với đặc quyền root những thư mục đó biết họ đang làm gì


0

Phiên bản Mac Catalina đã làm cho thư mục gốc không thể ghi được nữa.

Brew có một phiên bản cập nhật của mongodb để sử dụng một đường dẫn mới (do chính nó tạo ra) /usr/local/var/mongodbvà việc làm theo các hướng dẫn sau sẽ khắc phục được sự cố:

Hướng dẫn cài đặt mongodb-community-edition cập nhật

brew install mongodb-community@VERSION trong đó VERSION đầu tiên có bản sửa lỗi là 4.2


0

Tôi tạo một ý chính với các bước đơn giản để cài đặt và chạy mongodb trên 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


0

Để thêm vào những gì David Buck đã viết ở đây , trước tiên bạn phải thực sự tạo thư mục. Bạn có thể làm điều đó với:

sudo mkdir / Hệ thống / Khối lượng / Dữ liệu / dữ liệu / db

Nếu bạn gặp lỗi này:

"Lỗi phân tích cú pháp dòng lệnh: tùy chọn không được công nhận '--dbpath / Hệ thống / Khối lượng / Dữ liệu / dữ liệu / db' hãy thử 'mongod --help' để biết thêm thông tin"

sau khi tạo bí danh, đó chỉ là do David Buck (trong khi đưa ra nhận xét thực sự hữu ích) đã bỏ sót một khoảng trống trong câu trả lời của mình.

Để khắc phục điều này, hãy nhập

unalias mongod

và sau đó gõ

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


Không phải tôi ... tín dụng sẽ thuộc về Eugène Beliaev. Tôi vừa chỉnh sửa câu trả lời của họ để định dạng ...
David Buck
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.