MongoDB không thể tìm thấy thư mục dữ liệu sau khi nâng cấp lên Mac OS 10.15 (Catalina)


61

Tôi đã cập nhật lên MacOS 10.15 (Catalina) ngày hôm nay. Khi tôi chạy mongodtrong terminal, nó không thể tìm thấy /data/dbthư mục:

  /Users/william > mongod
2019-10-08T17:02:44.183+0800 I CONTROL  [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'
2019-10-08T17:02:44.209+0800 I CONTROL  [initandlisten] MongoDB starting : pid=43162 port=27017 dbpath=/data/db 64-bit host=Williams-MacBook-Pro-6.local
2019-10-08T17:02:44.209+0800 I CONTROL  [initandlisten] db version v4.0.3
2019-10-08T17:02:44.209+0800 I CONTROL  [initandlisten] git version: 7ea530946fa7880364d88c8d8b6026bbc9ffa48c
2019-10-08T17:02:44.209+0800 I CONTROL  [initandlisten] allocator: system
2019-10-08T17:02:44.209+0800 I CONTROL  [initandlisten] modules: none
2019-10-08T17:02:44.209+0800 I CONTROL  [initandlisten] build environment:
2019-10-08T17:02:44.209+0800 I CONTROL  [initandlisten]     distarch: x86_64
2019-10-08T17:02:44.209+0800 I CONTROL  [initandlisten]     target_arch: x86_64
2019-10-08T17:02:44.209+0800 I CONTROL  [initandlisten] options: {}
2019-10-08T17:02:44.211+0800 I STORAGE  [initandlisten] exception in initAndListen: NonExistentPath: Data directory /data/db not found., terminating
2019-10-08T17:02:44.211+0800 I NETWORK  [initandlisten] shutdown: going to close listening sockets...
2019-10-08T17:02:44.211+0800 I NETWORK  [initandlisten] removing socket file: /tmp/mongodb-27017.sock
2019-10-08T17:02:44.211+0800 I CONTROL  [initandlisten] now exiting
2019-10-08T17:02:44.211+0800 I CONTROL  [initandlisten] shutting down with code:100
  /Users/william > 

Tôi đã cố gắng cài đặt MongoDB với brew:

brew install mongodb

  /Users/william > brew install mongodb
Updating Homebrew...
Error: mongodb: unknown version :mountain_lion

Có ai giúp đỡ không?

Câu trả lời:


91

Đây là lỗi chính:

ngoại lệ trong initAndListen: NonExistentPath: Không tìm thấy thư mục dữ liệu / data / db., chấm dứt

Catalina có một thay đổi bất ngờ: nó sẽ không cho phép thay đổi thư mục gốc (điều này cũng đã được thảo luận trong một chủ đề diễn đàn ):

% sudo mkdir -p /data/db
mkdir: /data/db: Read-only file system

Thật không may, điều này không được phát âm rõ ràng trong các ghi chú phát hành Catalina của Apple , ngoài một đề cập ngắn gọn về các tính năng của Catalina :

macOS Catalina chạy trong một khối lượng hệ thống chỉ đọc, dành riêng

Vì thư mục /data/dbđược mã hóa theo mặc định MongoDB, một cách giải quyết là chỉ định một khác dbpathkhông nằm trên thư mục gốc. Ví dụ:

mongod --dbpath ~/data/db

Điều này sẽ đặt dữ liệu của MongoDB trong thư mục nhà của bạn. Chỉ cần chắc chắn rằng con đường ~/data/dbthực sự tồn tại.

Phương pháp thay thế

Một phương pháp khác là làm theo các hướng dẫn tại Cài đặt MongoDB Community Edition trên macOS bằng cách tận dụng brew:

brew tap mongodb/brew
brew install mongodb-community

Điều này sẽ tạo một số tệp bổ sung theo mặc định:

  • 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)

Để chạy, mongodbạn có thể:

  • Chạy lệnh thủ công từ dòng lệnh (điều này có thể được đặt bí danh cho thuận tiện):

    mongod --config /usr/local/etc/mongod.conf
  • Chạy MongoDB như một dịch vụ sử dụng brew services. Lưu ý rằng điều này sẽ chạy MongoDB như một nút độc lập (không phải là bộ bản sao), vì vậy các tính năng phụ thuộc vào oplog, ví dụ như changestream sẽ không hoạt động trừ khi bạn sửa đổi mongodtệp cấu hình:

    brew services start mongodb-community

Cảm ơn bạn đã trả lời, có phương pháp nào để định cấu hình dbpath trong bash_profile không? do đó, không cần chạy mongod với đường dẫn db mỗi lần.
Madhavan Sundararaj

Tôi đoán, sau khi cập nhật, hệ điều hành đã xóa thư mục / data / db hiện diện dưới mongodb
Madhavan Sundararaj

1
@MadhavanSundararaj nếu bạn muốn chạy mongodb --dbpath ...bằng cách chỉ cần gõ mongodbash, bạn có thể sử dụng một bí danh như alias mongod='mongod --dbpath ...'và đặt bí danh đó vào bashrc. Đây không phải là giải pháp sạch nhất nhưng nó có thể hoạt động cho mục đích của bạn.
kevinadi

macOS mới nhất không sử dụng zsh? nếu vậy, nó vẫn sử dụng .bashrc. Bởi vì các bí danh được đề xuất ở trên không hoạt động như mong đợi
Madhavan Sundararaj

1
@MadhavanSundararaj cho zshhoặc bất kỳ shell nào khác, bạn cần đặt bí danh dưới tệp RC của shell đó. Vì zsh~/.zshrc. Hãy chắc chắn rằng bạn cũng tuân theo cú pháp của shell để tạo bí danh.
kevinadi

61

Sau khi cài đặt Catalina, bạn có thể có một thư mục trên Bàn làm việc của bạn được gọi Relocated Items. Bạn có thể tìm thấy data/dbthư mục bên trong Securitythư mục.

Tất cả tôi phải làm là di chuyển Security/data/db, cụ thể data/dbvà đặt nó trong thư mục nhà của tôi.

Bạn có thể làm điều này với ứng dụng Finder hoặc với thiết bị đầu cuối bằng cách chạy lệnh sau:

sudo mv /Users/Shared/Relocated\ Items/Security/data ~/

Sau lần chạy đó: mongod --dbpath ~/data/db

Tùy thuộc vào bạn để tạo bí danh sớm hơn


6
Tôi gần như phát điên rằng việc nâng cấp Catalina có thể đã xóa tất cả dữ liệu của tôi. Cảm ơn đã cứu tôi khỏi sự điên rồ!
Adam Bubela

1
Cảm ơn @MarnixHarderwijk, nó hoạt động với tôi.
Zeeyed

2
Cảm ơn bạn rất nhiều vì bạn đã cứu ngày của tôi, hoạt động trên MacOS Catalina
từ

Khi tôi chạy lệnh mongod, tôi nhận được: Mong mongod không thể mở được vì nhà phát triển không thể xác minh được.
Raz

@Raz: Tôi nghĩ rằng điều này có liên quan đến apple.stackexchange.com/questions/362883/iêu
Marnix Harderwijk

7

Kevinadi đã công bằng cho câu hỏi, tuy nhiên đây là cách tôi giải quyết vấn đề:

Sau khi cài đặt cộng đồng mongodb

  1. sudo mkdir -p /System/Volumes/Data/data/db (Tạo thư mục dữ liệu / db)
  2. sudo chown -Rid -un /System/Volumes/Data/data/db(Cấp quyền)
  3. mongod --dbpath=/System/Volumes/Data/data/db (Thay đổi dbpath của mongodb)
  4. mongod (Chạy tốt)

Tôi thấy bài viết này về cài đặt mongodb rất hữu ích


Điều này đã giúp sau 1 ngày cố gắng khắc phục vấn đề! Bài viết không đề cập đến việc thay đổi dbpath và đó là điều tôi đã thiếu
mhlavacka

1

tìm thấy một mẹo ... xóa toàn bộ thư mục ~ / data / db khỏi thư mục sau đó tạo lại một thư mục mới nhưng KHÔNG SỬ DỤNG mkdir -p / data / db thay vào đó, chỉ cần sử dụng bàn di chuột của bạn để sử dụng cách hệ thống để tạo thư mục

cái này làm việc cho tôi


Nó không hoạt động :-(
Mo.

1

Đây là những gì làm việc cho tôi:

  1. Tạo một thư mục ở đâu đó, ví dụ: Development / mongodb / data / db
  2. Mở mongod.conf tập tin và cập nhật storage.dbPath giá trị cho các đường dẫn thư mục mới được tạo

1
tập tin mongod.conf ở đâu ??
ValRob

2
Đây là tập tin mặc định. Truy cập liên kết này: docs.mongodb.com/manual/reference/configuration-options và sau đó đến "Tệp cấu hình"
rolu


0

Phiên bản Mac Catalina làm cho thư mục gốc không còn có thể ghi.

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à làm theo các hướng dẫn sau sẽ khắc phục vấn đề:

Hướng dẫn cài đặt mongodb-phiên bản cộng đồng cập nhật

brew install mongodb-community@VERSION trong đó PHIÊN BẢN đầu tiên với bản sửa lỗi là 4.2


Lệnh trên nên được thực thi với sudo. Sau đó, cấu hình dbPath sẽ được tôn trọng. Nếu không, mongo vẫn mặc định /data/dbbất kể cấu hình.
Matt Hagemann
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.