I had an unclean shutdown of MongoDB on Ubuntu 10.04 LTS. Now when I login as root and run Mongodb via service mongodb start, I get below error-
Mon Dec 12 13:53:15 [initandlisten] ERROR: listen(): bind() failed errno:13 Permission denied for socket: /tmp/mongodb-27017.sock
When I run MongoDB manually via root, it works just fine.
I can confirm that there is no /tmp/mongodb-27017.sock file
root@devbox:~# ll /tmp/
total 16
drwxr-xr-x 4 root root 4096 2011-12-12 13:53 ./
drwxr-xr-x 25 root root 4096 2011-12-11 13:06 ../
drwxrwxrwt 2 root root 4096 2011-12-12 13:01 .ICE-unix/
drwxrwxrwt 2 root root 4096 2011-12-12 13:01 .X11-unix/
Where do I begin troubleshooting?
Make sure the Ubuntu mongo user has access to the file. The Mongo Ubuntu service uses the Ubuntu Mongo user. To find out the mongo username is go to /var/lib/mongodb directory and show the permissions: ls -l
In the Versions before 3.0 the socket was created with 777 permissions by default. Most the most correct way set permissions to mongod socket is set value in mongodb.conf. For example:
and insert line:
to it.
In case if you will try directly change permissions to /tmp/mongodb-27017.sock with chown and chmod you can have a chance set it temporary. And have a old permissions after mongod service restart or server reboot.
What's are the file permissions on /tmp? Is it possible that they've been changed?
A
will tell you.
If you're unsure try:
That might fix it.
Try changing owner like this,
I have same issue, because I have use run mongodb by root, it will start fail with
systemctl
on CentOS 7.3.Please use the correct permission for mongodb.
$ sudo chown -R mongod:mongod \ /var/run/mongodb/mongod.pid \ /tmp/mongodb-27017.sock \ /var/lib/mongo/
If we have other fail like
Error reading file /path/file: Permission denied
, maybe we can fix it by SELinux.$ sudo chcon -v -t mongod_var_lib_t /path/file
By the way, I don't recomment use the 777 permission, it's so danger. :P