Read-only file system when attempting mkdir /data/db on Mac

MongodbMacosTerminal

Mongodb Problem Overview


I am trying to create a new folder in the main directory

Tried all kinds of examples

sudo mkdir /data/db

sudo mkdir -p /data/db

I keep getting >mkdir: /data: Read-only file system

Mongodb Solutions


Solution 1 - Mongodb

If you have a Mac and updated to Catalina or more recent version, then the root folder is no longer writable.

I just changed the directory somewhere else.

Been using this command for now

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

Solution 2 - Mongodb

from the official docs https://docs.mongodb.com/manual/tutorial/install-mongodb-on-os-x/

install homebrew and run the following commands

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

then

brew tap mongodb/brew

then

brew install [email protected]

and

brew services start mongodb-community

or

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

then

ps aux | grep -v grep | grep mongod

and

mongo

to verify you can run show dbs in the mongo shell

Solution 3 - Mongodb

With the new macOS Catalina update, the folder /data/db becomes read-only, you cannot modify it. Follow this procedure to create a DB in another folder:

  1. Change mongod directory :

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

  2. Give it an alias to use it as mongod:

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

  3. Just type mongod in your terminal, it should work.

Extra => If you need to give it current user rights, use this line of code :

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

(Just for info -> $(whoami) is just a variable that returns your current user)

Solution 4 - Mongodb

To make a permanent change of the path of mongod db folder.

Following these docs they say roughly this. If mongod is started with brew services:

$ brew services start mongodb-community@4.2

It will use config file at path /usr/local/etc/mongod.conf


To fix this, edit the config file:

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

And change the dbPath e.g. to your home directory like this:

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 

Save the file and restart mongod with brew:

$ brew services restart mongodb-community@4.2

Solution 5 - Mongodb

You can't create a folder on the root directory on Mac Catalina anymore!

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

Dedicated system volume

> macOS Catalina runs in a dedicated, read-only system volume — which means it is completely separate from all other data and helps improve the reliability of 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

Solution 6 - Mongodb

So, with macOS Catalina Apple created a new Volume for security purposes. If you’re on macOS Catalina, you'll need to create the /data/db folder in System/Volumes/Data.

Follow these commands

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

Start MongoDB

  1. brew services run mongodb-community

  2. Enjoy 

Solution 7 - Mongodb

If you are on mac and facing the issue then below command is useful, whoami variable will get the current user

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

Solution 8 - Mongodb

I am at a loss why Apple did that.. So now, we can not have any root level directory other than theirs ? This just doesn't make any sense and people creating with root privileges those folders know what they are doing

Solution 9 - Mongodb

Default Paths for the mongodb-community Formula

In addition to installing the MongoDB server and tool binaries, the mongodb-community formula creates:

  • a configuration file: /usr/local/etc/mongod.conf
  • a log directory path: /usr/local/var/log/mongodb
  • a data directory path: /usr/local/var/mongodb

then it worked for me:

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

Solution 10 - Mongodb

This is what worked for me as I was undergoing a Udemy course:

  1. Install HomeBrew by typing this into your terminal

    /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

  2. Move your old /data/db folder (if you want to backup your current dbs) into a non root folder and proceed with the next step

  3. Run in Terminal a) brew uninstall mongodb b) If needed run brew uninstall --force mongodb c) brew tap mongodb/brew d) brew install mongodb-community e) brew services start mongodb/brew/mongodb-community

  4. All you need now is to run mongo in the Terminal and you'll see the mongo shell symbol >.

Please let me know if this works ;) It took me almost 2 hours to figure it out, based on this article: https://apple.stackexchange.com/questions/362883/mongodb-doesnt-work-after-update-to-macos-catalina-10-15

Cheers, Radu

Solution 11 - Mongodb

I did this:

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

since the new path that is "usr/local/var/mongodb".

Solution 12 - Mongodb

To add on to what David Buck wrote here, first you have to actually make the directory. You can do that with:

> sudo mkdir /System/Volumes/Data/data/db

If you're getting this error:

> "Error parsing command line: unrecognised option > '--dbpath/System/Volumes/Data/data/db' try 'mongod --help' for more > information"

after creating the alias, it's just because David Buck (while making a really helpful comment) missed a space in his answer.

To fix this, type

> unalias mongod

and then type

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

Solution 13 - Mongodb

You cannot create a /data/ directory. That is reserved for the APFS filesystem. Check Bombich’s blog about this issue.

Solution 14 - Mongodb

With macOS Catalina, you can no longer store files or data in the read-only system volume, nor can you write to the "root" directory ( / ) from the command line, such as with Terminal.

Solution 15 - Mongodb

I create a gist with simple steps to install and run mongodb on catalina

# install homebrew (https://brew.sh/) and run the following commands
sudo chown -R $(whoami) $(brew --prefix)/*
brew tap mongodb/brew
brew install [email protected]

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

Solution 16 - Mongodb

Mac version Catalina made the root folder is no longer writable.

Brew has an updated version of mongodb to use a new path (which it creates itself), /usr/local/var/mongodb and following these instructions will fix the issue:

Guide to installing updated mongodb-community-edition

brew install mongodb-community@VERSION where the first VERSION with the fix is 4.2

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionjalapinaView Question on Stackoverflow
Solution 1 - MongodbjalapinaView Answer on Stackoverflow
Solution 2 - MongodbWill AbuleView Answer on Stackoverflow
Solution 3 - MongodbEugène BeliaevView Answer on Stackoverflow
Solution 4 - MongodbJirikView Answer on Stackoverflow
Solution 5 - MongodbxgqfrmsView Answer on Stackoverflow
Solution 6 - Mongodbuser5683940View Answer on Stackoverflow
Solution 7 - MongodbAnjum....View Answer on Stackoverflow
Solution 8 - MongodbLaurent-Philippe AlbouView Answer on Stackoverflow
Solution 9 - Mongodbshivkanth patilView Answer on Stackoverflow
Solution 10 - MongodbRadu S.View Answer on Stackoverflow
Solution 11 - MongodbfranfonseView Answer on Stackoverflow
Solution 12 - MongodbJohnnyGView Answer on Stackoverflow
Solution 13 - MongodbjvarelaView Answer on Stackoverflow
Solution 14 - MongodbÜmit ÜnverView Answer on Stackoverflow
Solution 15 - MongodbNicolas SturmView Answer on Stackoverflow
Solution 16 - MongodbRobKohrView Answer on Stackoverflow