Read-only file system when attempting mkdir /data/db on Mac
MongodbMacosTerminalMongodb 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:
-
Change
mongod
directory :sudo mongod --dbpath /System/Volumes/Data/data/db
-
Give it an alias to use it as
mongod
:alias mongod="sudo mongod --dbpath /System/Volumes/Data/data/db"
-
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
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
sudo mkdir -p /System/Volumes/Data/data/db
sudo chown -R
id -un/System/Volumes/Data/data/db
Start MongoDB
-
brew services run mongodb-community
-
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:
-
Install HomeBrew by typing this into your terminal
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
-
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
-
Run in Terminal a)
brew uninstall mongodb
b) If needed runbrew uninstall --force mongodb
c)brew tap mongodb/brew
d)brew install mongodb-community
e)brew services start mongodb/brew/mongodb-community
-
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