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?
What's are the file permissions on /tmp? Is it possible that they've been changed?
A
# ls -ld /tmp
will tell you.
If you're unsure try:
# chown root:root /tmp
# chmod 1777 /tmp
That might fix it.
Try changing owner like this,
sudo chown mongodb:mongodb /tmp/mongodb-27017.sock
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
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
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:
sudo vim /usr/local/etc/mongodb.conf
and insert line:
filePermissions = 0777
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.