/data/db in root directory and ran
[initandlisten] exception in initAndListen: 20 Attempted to create a lock file on a read-only directory: /data/db, terminating [initandlisten] shutdown: going to close listening sockets... [initandlisten] shutdown: going to flush diaglog... [initandlisten] now exiting [initandlisten] shutting down with code:100
The problem is that the directory you created,
/data/db is owned by and only writable by the root user, but you are running mongod as yourself. There are several ways to resolve this, but ultimately, you must give the directory in question the right permissions. If this is for production, I would advise you to check the docs and think this over carefully -- you probably want to take special care.
However, if this is just for testing and you just need this to work and get on with it, you could try this, which will make the directory writable by everyone:
> sudo chmod -R go+w /data/db
or this, which will make the directory owned by you:
> sudo chown -R $USER /data/db
On a Mac, I had to do the following:
sudo chown -R $USER /data/db sudo chown -R $USER /tmp/
because there was also a file inside
/tmp which Mongo also needed access
If your system is using SELinux, make sure that you use the right context for the directory you created:
ls -dZ /data/db/ ls -dZ /var/lib/mongo/
and clone the context with:
chcon -R --reference=/var/lib/mongo /data/db
First of all stop all the mongoDB services, then create a directory on
/ , it means root, if you don't have, and remove the port file also.
give all permission to that directory, become that directory owner, run below command:
sudo service mongod stop sudo rm -rf /tmp/mongod* sudo mkdir -p /data/db sudo chmod -R a+wxr /data sudo chown -R $USER:$USER /data
Now you're done, just start the MongoDB service, if didn't help, try to change the port like:
sudo service mongod restart && mongod # if didn't help run below cmd mongod --port 27018
Note: For me all this stuff works and hoping would work for you, guy!
I experienced the same problem and following solution solved this problem. You should try the following solution.
sudo mkdir -p /data/db
sudo chown -R 'username' /data/db
Fix the permissions of
sudo chown -R mongodb: /data/db
then restart MongoDB e.g. using
sudo systemctl restart mongod
In case that does not help, check your error message if you are using a data directory different to /var/lib/mongodb. In that case run
sudo chown -R mongodb: <insert your data directory here>
Nice solutions, but I wonder why nobody is giving the solution for windows.
If you are using windows you just have to "Run as Administrator" the cmd.
If you are checking your mongodb logs and you are getting such an error then just follow steps as i did. It occurs due to permission issues with your
/data/db directory. I am using ubuntu16.04 and I find solution with running two simple commands as follow.
Step 1: Give permission to /data/db directory:
sudo chmod -R 0777 /data/db
Step 2: Try to start mongod service as :
sudo service mongod start
Step 3: Check status of mongod service:
sudo service mongod status
I dealt with the same problem:
Change to the MongoDB directory which contains the
bin directory, and run:
Running MongoDB as the root user you might be asked to enter the root password. If you still can not run the MongoDB, then check the permissions for MongoDB's data directory. Enter:
ls -ld /data
ls -l / for the permissions for all directories and files in the directory including the
The permission mode for the root user should be "
rwx", meaning the root user is able to read, write and execute the files.
To make this happen, we use:
chmod 755 /data
755 is a octal notation to set the permissions, of the
/data directory to "
rwxr-xr-x", which means the root user can read, write and execute, whereas the "group" and "everyone"are able to only read and execute.
Note: When you can't do this, type instead:
sudo chmod 755 /data
to set the permission as the root user.
Then, when done with that step, recapture the permission modes using:
ls -ld /data
which should look like:
drwxr-xr-x 3 root wheel 102 Mar 3 17:00 /data
You don't need to worry about the "
d" at the beginning, and notice that the permissions reflect "
You can now change back to the MongoDB directory and type:
to run MongoDB.
If you do not need to have the database directories in root, you can create
data/db in your home directory (
mkdir -p ~/data/db).
Then you can start the MongoDB server with the
(This is assuming you're starting it from a terminal.)
In fact, it does not have to be
~/data/db, it can be anywhere you want and this way you can have multiple database paths and organize everything nicely. May not be the best option for production (depending on what you want to do), but for developing works fine.
you just need to run the command as a super user:
just type from the terminal: sudo su mongod
If you are On Windows, and you are trying to setup MongoDB, run cmd as Admnistrator is the way forward as Enrique suggested above see it here
This worked for me in Ubuntu LTS 20.04:
$ sudo service mongod start
Check if SElinux is enabled. If it is in enforcing mode just try with permissive mode. In case that helps you should create SElinux policies for mongodb.
You can try with audit2allow - check https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/security-enhanced_linux/sect-security-enhanced_linux-fixing_problems-allowing_access_audit2allow
Most methods of installing mongo will create a user 'mongodb'. If you have this user you should use it rather than just hacking at permissions til everything seems to work...
cat /etc/passwd | grep mongo
Trying to run mongodb as root is a bad idea and trying to run it as a normal user will give you the kind if error messages you are seeing. Use the -u option to sudo to run programs as a different user.
sudo -u mongodb mongod --dbpath /what/ever/
Also, various instructions and tutorials require you to stop mongod, make some changes, then restart it. Depending on how you stop mongod it's lock file might still be languishing in tmp, so make sure that's gone before trying to restart the daemon...
sudo rm /tmp/mongodb-27017.sock
There is no operation permission for the folder
currently this folder only has read-only permission.
1.Modify permissions: ensure that the current user has read and write permissions to
sudo chown -r your-user-name /data/db
2.Create a database path elsewhere and change the MongoDB database path for example:
I actually planned to put the database path in a place where I can see it at all times.
I used the second method directly
#First create a database storage directory,
I built it in
#When running in the future, enter the following command to ok
mongod --dbpath ~/Documents/mongodb/data
in addition, The following problems may occur when you configure global variables in MongoDB:
1.The default terminal of the system is generally
bash, but I use
Then what we have to do is clear:
We need to permanently set system environment variables in
zsh starts, it will first read the configuration file
so we can put the configuration information of environment variables in this configuration file
vi ~/.zshrc Add export PATH=/usr/local/mongodb/bin:$PATH
2.The default database storage address of mongodb is
which requires us to manually create
sudo mkdir -p /data/db
Then we start the service (start the server)
If you can see the prompt [Waiting for connection 27017],
your database service has actually been started
(although there are some non-critical warnings)
Displaying the interface waiting for the client to connect means that the startup is successful.
If it is unsuccessful, check the location of the
If it doesnt work, delete it and create a new one.
Open the browser, enter
and a line like this will appear Word.
It looks like you are trying to access MongoDB over HTTP on the native driver port.
3.Enter MongoDB command operation
Reopen the command line and enter
The database can be operated, and now we can perform database-related operations, such as executing
When you want to stop MongoDB, you must exit correctly,
otherwise, there will be problems connecting to the database next time.
Use the following two lines of code to complete this operation.
use admin; db.shutdownServer();
the visualization tool RoboMongo
You can choose the version that suits you to download.
If you are a Mac user, you will download the MongoDB's TGZ compressed file,
decompressed, put the decompressed file in
by default, in the Finder, you can't see
/usr this directory (terminals are used Please be skilled),
you can see this hidden directory after you can use the
Shift + Command + G input
What's more, What to do if the connection to MongoDB fails?
Mainly due to the abnormal shutdown last time, the lock file was generated, just delete the lock file.
sudo rm /data/db/mongod.lock
What if the execution of the
sudo mongod command has been stuck?
In fact, it is not stuck, but started.
This window cannot be closed.
If you open a new window, you will find that you can execute the
sudo mongo command.
How to avoid this problem
Note: When you want to stop MongoDB, you must exit correctly,
otherwise there will be problems connecting to the database next time.
Use the following two lines of code to complete this operation. Again:
use admin; db.shutdownServer();
If you don't download MongoDB, and if use mac, just open the terminal,
use the command to into dir:
and use the command to download via your hands:
sudo curl -O https://fastdl.mongodb.org/osx/mongodb-macos-x86_64-4.X.X.tgz
notices:4.X.X, the version of the MongoDB.
What's more, if you download stuiod3t-2019030.dmg for macOS,
Install the dmg file;
Open the file after installation;
Install the directory as shown in the figure, and drag the downloaded
data-man-mongodb-ent-2019.3.0.jarinto and overwrite the original one;
sudo spctl --master-disable Finished~.
(stuiod3t-2019030.dmg for macOS Cracking: https://blog.csdn.net/m0_49337600/article/details/111415870)
In my case, I was using a custom path for my data directory and I had the wrong permission set on it.
The data folder was assigned with permission
ubuntu:ubuntu. You have to use
mongodb as user:group.
sudo chown -R mongodb:mongodb /path/to/mongodb