MongoDB can't find data directory after upgrad

2020-01-24 09:21发布

I updated to MacOS 10.15 (Catalina) today. When I run mongod in the terminal it cannot find the /data/db directory:

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

I tried to install MongoDB with brew:

brew install mongodb

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

Any help?

标签: mongodb macos
6条回答
▲ chillily
2楼-- · 2020-01-24 09:38

This is the main error:

exception in initAndListen: NonExistentPath: Data directory /data/db not found., terminating

Catalina has a surprise change: it won't allow changes to the root directory (this was discussed in a forum thread as well):

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

Unfortunately, this is not spelled out explicitly in Apple's Catalina release notes, other than a brief mention in Catalina features:

macOS Catalina runs in a dedicated, read-only system volume

Since the directory /data/db is coded as MongoDB default, a workaround is to specify a different dbpath that is not located on the root directory. For example:

mongod --dbpath ~/data/db

This will place MongoDB's data in your home directory. Just make sure that the path ~/data/db actually exists.

Alternative method

An alternative method is to follow the instructions at Install MongoDB Community Edition on macOS by leveraging brew:

brew tap mongodb/brew
brew install mongodb-community

This will create some additional files by default:

  • the configuration file (/usr/local/etc/mongod.conf)
  • the log directory path (/usr/local/var/log/mongodb)
  • the data directory path (/usr/local/var/mongodb)

To run mongod you can either:

  • Run the command manually from the command line (this can be aliased for convenience):

    mongod --config /usr/local/etc/mongod.conf
    
  • Run MongoDB as a service using brew services. Note that this will run MongoDB as a standalone node (not a replica set), so features that depends on the oplog e.g. changestreams will not work unless you modify the mongod configuration file:

    brew services start mongodb-community
    
查看更多
3楼-- · 2020-01-24 09:45

found a trick... delete the ~/data/db entire folder from the directory then recreate a new one but DO NOT USE mkdir -p /data/db instead, just use your trackpad to do it use system way to create folder

this worked for me

查看更多
干净又极端
4楼-- · 2020-01-24 09:50

Here's what worked for me:

  1. Create a folder somewhere e.g. Development/mongodb/data/db
  2. Open mongod.conf file and update storage.dbPath value to the the newly created folder path
查看更多
可以哭但决不认输i
5楼-- · 2020-01-24 10:00
做自己的国王
6楼-- · 2020-01-24 10:04

After installing Catalina, you might have a folder on your Desktop called Relocated Items. You can find the data/db folder inside the Security folder.

All I had to do was move the Security/data/db, specifically data/db and place it inside my home folder.

You can do this with the Finder app or with the terminal by running the following command:

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

After that run: mongod --dbpath ~/data/db

It's up to you to create the alias earlier

查看更多
放我归山
7楼-- · 2020-01-24 10:04

Kevinadi already did justice to the question, however this is how I went about solving the problem:

After installing mongodb-community

  1. sudo mkdir -p /System/Volumes/Data/data/db (Create the data/db folder)
  2. sudo chown -Rid -un/System/Volumes/Data/data/db (Give permissions)
  3. mongod --dbpath=/System/Volumes/Data/data/db (Change dbpath of mongodb)
  4. mongod (Runs well)

I found this article on installing mongodb very useful

查看更多
登录 后发表回答