Mac OS 10.15 (Catalina)로 업그레이드 한 후 MongoDB가 데이터 디렉토리를 찾을 수 없음


61

오늘 MacOS 10.15 (Catalina)로 업데이트했습니다. mongod터미널에서 실행할 때 /data/db디렉토리를 찾을 수 없습니다 .

  /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 > 

MongoDB를 brew다음 과 같이 설치하려고했습니다 .

brew install mongodb

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

어떤 도움?

답변:


91

이것은 주요 오류입니다.

initAndListen 예외 : NonExistentPath : 데이터 디렉토리 / data / db를 찾을 수 없습니다.

Catalina는 놀라운 변화를 가져 왔습니다 : 루트 디렉토리에 대한 변경을 허용하지 않습니다 (이것은 포럼 스레드 에서도 논의되었습니다 ) :

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

불행히도, 이것은 Catalina 기능 에 대한 간단한 언급 외에 Apple의 Catalina 릴리스 노트에 명시 적으로 나와 있지 않습니다 .

macOS Catalina는 전용의 읽기 전용 시스템 볼륨에서 실행됩니다

디렉토리 /data/db는 MongoDB 기본값으로 코딩되어 있으므로 해결 방법은 dbpath루트 디렉토리에없는 다른 디렉토리 를 지정하는 것 입니다. 예를 들면 다음과 같습니다.

mongod --dbpath ~/data/db

그러면 MongoDB의 데이터가 홈 디렉토리에 배치됩니다. 경로가 ~/data/db실제로 존재 하는지 확인하십시오 .

대체 방법

다른 방법은 다음 을 활용하여 macOSMongoDB Community Edition 설치 의 지시 사항을 따르는 것입니다 brew.

brew tap mongodb/brew
brew install mongodb-community

기본적으로 몇 가지 추가 파일이 생성됩니다.

  • 구성 파일 (/usr/local/etc/mongod.conf)
  • 로그 디렉토리 경로 (/ usr / local / var / log / mongodb)
  • 데이터 디렉토리 경로 (/ usr / local / var / mongodb)

실행하려면 다음 mongod중 하나 를 수행 하십시오.

  • 명령 행에서 수동으로 명령을 실행하십시오 (편의를 위해 별명을 지정할 수 있음).

    mongod --config /usr/local/etc/mongod.conf
  • 를 사용하여 MongoDB를 서비스로 실행하십시오 brew services. 이렇게하면 MongoDB가 독립형 노드 (복제 세트가 아님)로 실행되므로 oplog에 의존하는 기능 (예 : changestream)은 mongod구성 파일 을 수정하지 않으면 작동하지 않습니다 .

    brew services start mongodb-community

bash_profile에서 dbpath를 구성하는 방법에 대한 답변에 감사드립니다. 따라서 매번 db 경로로 mongod를 실행할 필요가 없습니다.
Madhavan Sundararaj

나는, 업데이트 후, OS는 현재 아래의 MongoDB를했다 / 데이터 / DB 폴더 삭제 같아요
마드 하반 Sundararaj을

1
@MadhavanSundararaj bash에 mongodb --dbpath ...입력 하여 실행 mongod하려면 별칭을 사용하고에 별칭 alias mongod='mongod --dbpath ...'을 넣을 수 있습니다 bashrc. 가장 깨끗한 솔루션은 아니지만 목적에 따라 작동 할 수 있습니다.
kevinadi

최신 macOS가 zsh를 사용하지 않습니까? 그렇다면 여전히 .bashrc를 사용합니까? 예상대로 위의 제안 별칭이 작동하지 않았기 때문에
마드 하반 Sundararaj을

1
@MadhavanSundararaj zsh또는 다른 쉘의 경우, 해당 쉘의 rc 파일에 별명을 넣어야합니다. 들어 zsh그건 ~/.zshrc. 별명 작성에 대한 쉘 구문도 따르십시오.
kevinadi

61

Catalina를 설치 한 후 바탕 화면에이라는 폴더가있을 수 있습니다 Relocated Items. data/db폴더 안에서 폴더 를 찾을 수 있습니다 Security.

내가해야 할 일은 Security/data/db구체적 으로 이동하고 data/db내 홈 폴더 안에 넣는 것입니다.

다음 명령을 실행하여 Finder 앱 또는 터미널에서이를 수행 할 수 있습니다.

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

그 후 : mongod --dbpath ~/data/db

별칭을 더 일찍 만드는 것은 당신에게 달려 있습니다.


6
카탈리나 업그레이드로 인해 모든 데이터가 지워질 수 있다는 것은 거의 미쳤다. 광기에서 나를 구해 주셔서 감사합니다!
Adam Bubela

1
@MarnixHarderwijk에게 감사드립니다.
Zeeyed

2
오늘 하루를 구해 주셔서 감사합니다. MacOS Catalina에서 작업
afr

mongod 명령을 실행하면 개발자를 확인할 수 없기 때문에“mongod”를 열 수 없습니다.
Raz


7

Kevinadi는 이미 문제에 대해 정의를 수행했지만 이것이 문제를 해결하는 방법입니다.

mongodb-community를 설치 한 후

  1. sudo mkdir -p /System/Volumes/Data/data/db (data / db 폴더 생성)
  2. sudo chown -Rid -un /System/Volumes/Data/data/db(권한 부여)
  3. mongod --dbpath=/System/Volumes/Data/data/db (mongodb의 dbpath 변경)
  4. mongod (잘 작동합니다)

mongodb 설치에 대한 이 기사 가 매우 유용하다는 것을 알았습니다


문제를 해결하려고 하루가 지난 후에 도움이되었습니다. 이 기사는 dbpath 변경에 대해 언급하지 않았으며 그것이 내가 놓친 것입니다
mhlavacka


1

나를 위해 일한 것은 다음과 같습니다.

  1. 개발 / mongodb / data / db 어딘가에 폴더 생성
  2. mongod.conf 파일을 열고 storage.dbPath 값을 새로 작성된 폴더 경로로 업데이트하십시오 .

1
mongod.conf 파일은 어디에 있습니까?
ValRob

2
기본 파일입니다. 이 링크로 이동하십시오 : docs.mongodb.com/manual/reference/configuration-options 그리고 "구성 파일"
rolu


0

Mac 버전 Catalina는 루트 폴더를 더 이상 쓸 수 없도록 만들었습니다.

Brew는 새로운 경로를 사용하기 위해 mongodb의 업데이트 버전을 가지고 있으며, /usr/local/var/mongodb이 지침에 따라 문제를 해결할 수 있습니다.

업데이트 된 mongodb-community-edition 설치 안내서

brew install mongodb-community@VERSION 여기서 수정 사항이있는 첫 번째 버전은 4.2입니다.


위 명령은 sudo로 실행해야합니다. 그런 다음 dbPath 구성이 존중됩니다. 그렇지 않으면 mongo /data/db는 구성 에 관계없이 여전히 기본값 입니다.
Matt Hagemann
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.