42

Earlier i was storing all the mongodb data files in /var/lib/mongodb directory..and the dbpath entry in /etc/mongodb.conf was /var/lib/mongodb..

Now i want to change the data directory to /vol/db..so I created the directory /vol/db and changed the permissions using sudo chown -R id -u /vol/db and changed the db path entry to /vol/db in /etc/mongodb.conf

now when i start the mongodb using sudo service mongodb start..i am getting this error in /var/log/mongodb/mongodb.log

http://pastebin.com/C0tv8HQN

i need help..where I am wrong?

3
  • i am using sudo chown -R id -u /vol/db and sudo chown -R username:username /vol/db Commented May 12, 2011 at 5:58
  • 1
    Can you paste the output of ls -altrh /vol and ls -altrh /vol/db? Commented May 12, 2011 at 6:06
  • 1
    I am having the same problem, can you reply back if you have solved this? Commented Aug 3, 2011 at 15:59

6 Answers 6

56

I was having the same problem, but was able to solve it thanks to a similar question. You need to make sure that /vol/db/ is owned by mongodb.

sudo chown -R mongodb:mongodb /vol/db/

If you get the error chown: invalid user: 'mongodb:mongodb', check /etc/passwd to see if there is a similar user that exists (ex. mongod).

Sign up to request clarification or add additional context in comments.

3 Comments

what if I get an invalid user error and there isn't anything in /etc/passwd that is similar
in case my service name is mongod, what will be my user:group?
probably mongod, try: groups mongod
19

The easiest would be

sudo chmod 777 /data/db

5 Comments

this worked for me.. when I ran sudo chown mongodb:mongoDB /vol/db i received : "illegal group name"... this solution worked
This command will give very open permissions to the directory in question. The answer from @Kaezarrex (sudo chown mongodb:mongodb /data/db) should have the desired effect without opening the permissions so widely.
Never give 777 to a file, specially if it's on a production server
yeah this "works" if you don't care about security whatsoever.
Leaving world-writable directories on a server is a bad idea... Any user can delete / edit any file in that directory
7

If after changing permissions and ownership of the new db path, you're still seeing this issue, run getenforce to see if you are using a system with SELinux running in enforce mode. If getenforce returns 'enforcing', it's likely selinux is the cause of the permissions error, since mongodb is now running outside it's original context scope since the db location changed out of /var/lib/...

I don't know the details, but a brute force way then to resolve the issue without writing your own selinux policy for the new context is to simply turn off selinux :-/

sudo setenforce 0

Ideally, you'd figure out how to update the selinux policy if you're planning to run in production.

Comments

2

I suggest to check what is the error by reading mongo log

tail -50 /var/log/mongodb/mongodb.log

you can immediately find the problem(including permission ones)

Comments

2

Try the following:

$ sudo chmod 755 /vol/db && sudo chown $USER /vol/db

1 Comment

Add -R to this and then it worked for me, to recurse all sub files and folders: sudo -R chmod 755 /data/db && sudo chown -R $USER /data/db
0

Depending on the linux distro you are using the command could be different to change the permission of the directory. I'm using centOS and Mongodb version I using is 8. It worked when I did this.

sudo chown -R mongod:mongod /var/lib/mongo

sudo systemctl restart mongod

Just make sure you check the /var/lib directory to see what mongo director/folder you are change; Sometimes it's mongodb and sometimes its mongo

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.