MongoDB not working. "ERROR: dbpath (/data/db) does not exist."

node.jsAngularjsMongodbExpress

node.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/

See the example link

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

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
Questionuser3810163View Question on Stackoverflow
Solution 1 - node.jslpapponeView Answer on Stackoverflow
Solution 2 - node.jsMuhammad AliView Answer on Stackoverflow
Solution 3 - node.jsgabrielhwsView Answer on Stackoverflow
Solution 4 - node.jsRaugaralView Answer on Stackoverflow
Solution 5 - node.jsPoikilosView Answer on Stackoverflow
Solution 6 - node.jsMonaView Answer on Stackoverflow