MongoDB not working. "ERROR: dbpath (/data/db) does not exist."
node.jsAngularjsMongodbExpressnode.js Problem Overview
I'm getting the following error when I try to run "mongod" in the terminal. I've tried uninstalling, reinstalling, and restarting the machine. Any suggestions on how to get it working would be amazing.
ERROR:
dbpath (/data/db) does not exist.
Create this directory or give existing directory in --dbpath.
See http://dochub.mongodb.org/core/startingandstoppingmongo
Side note: Node also stopped working on my machine around the same time that I got this error.
events.js:72
throw er; // Unhandled 'error' event
^
Error: failed to connect to [localhost:27017]
Any help would be much appreciated!
node.js Solutions
Solution 1 - node.js
This should work to ensure that the directory is set up in the right place so that Mongo can find it:
sudo mkdir -p /data/db/
sudo chown `id -u` /data/db
Solution 2 - node.js
You need to create the directory on root /data/db or set any other path with the following command :
mongod --dbpath /srv/mongodb/
Solution 3 - node.js
I solved the problem with :
sudo mongod --dbpath=/var/lib/mongodb
and then mongo to access the mongodb Shell.
Solution 4 - node.js
Change the user of the new data directory:
> chown mongodb [rute_directory]
And try another time to start the mongo service
> service mongod start
I solve the same problem with this.
Solution 5 - node.js
Daemons (usually ending with d) are normally started as services. Starting the service (daemon) will allow mongodb to work as designed (without permission changes if integrates well with your distro). I start it using the service named mongodb instead of starting mongod directly--on distro with systemd enable on startup then run like:
sudo systemctl enable mongodb
sudo systemctl start mongodb
or, on distro with upstart (if you have /etc/init) or init (if you have /etc/init.d) ( https://www.tecmint.com/systemd-replaces-init-in-linux/ ) instead run:
sudo service mongodb enable
sudo service mongodb start
If you have a distro with rc ("run commands") such as Gentoo (settings in /etc/init.d) (https://forums.gentoo.org/viewtopic-t-854138-start-0.html) run:
rc-update add mongodb default
/etc/init.d/mongodb start
In a distro/version of FreeBSD which still has rc (check whether your version switched to systemd, otherwise see below):
-
add the following line to /etc/rc.conf:
mongod_enable="YES"
-
then:
sudo service mongod start
After starting the service, an unpriveleged user can use mongo, and each user will have separate data.
Solution 6 - node.js
I also got the error that "The file /data/db doesn't exist" when I tried to save my file using the "mkdir -p /data/db" command(using both with and without sudo command). But later on one site, a person named Emil answered that the path "/data/db" no longer works on Mac, so use "~/data/db" instead i.e., use the command mkdir -p ~/data/db instead of previous command. Moreover, use mongod --dbpath ~/data/db to run mongod It worked for me, hope it work for others too facing the same problem