MongoDB - Отказано в доступе для сокета: /tmp/mongodb-27017.sock - PullRequest
17 голосов
/ 12 декабря 2011

У меня было нечистое отключение MongoDB на Ubuntu 10.04 LTS.Теперь, когда я вхожу в систему как root и запускаю Mongodb через запуск службы mongodb, я получаю ошибку ниже -

Mon Dec 12 13:53:15 [initandlisten] ERROR: listen(): bind() failed errno:13 Permission denied for socket: /tmp/mongodb-27017.sock

Когда я запускаю MongoDB вручную через root, все работает нормально.

Я могу подтвердить, что нет файла /tmp/mongodb-27017.sock

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/

С чего начать устранение неполадок?

Ответы [ 6 ]

17 голосов
/ 09 августа 2016

Попробуйте сменить владельца следующим образом,

sudo chown mongodb:mongodb /tmp/mongodb-27017.sock
17 голосов
/ 12 декабря 2011

Какие права доступа к файлам для / tmp? Возможно ли, что они были изменены?

A

# ls -ld /tmp

скажет вам.

Если вы не уверены, попробуйте:

# chown root:root /tmp
# chmod 1777 /tmp

Это может исправить это.

0 голосов
/ 08 апреля 2019

мы используем mac и устанавливаем mongodb, обычно не нужен mongodb.conf, поэтому попробуйте это:

sudo chown -R your-username /tmp/

ps: ваше имя пользователя - это ваше имя пользователя в Mac OS, а не root. Если вы не используетене знаю, какое у вас имя пользователя, есть команда:

whoami
0 голосов
/ 02 ноября 2018

В версиях до 3.0 сокет был создан с разрешениями 777 по умолчанию. Наиболее правильным способом установки разрешений для сокета mongod является заданное значение в mongodb.conf . Например:

sudo vim /usr/local/etc/mongodb.conf

и вставить строку:

filePermissions = 0777 

к нему.

Если вы попытаетесь напрямую изменить разрешения на / tmp / mongodb-27017.sock с chown и chmod , вы можете установить его временный характер. И иметь старые разрешения после перезапуска службы mongod или перезагрузки сервера.

0 голосов
/ 13 апреля 2017

У меня та же проблема, потому что я использовал run mongodb от имени root, он не сможет работать с systemctl в CentOS 7.3.

Пожалуйста, используйте правильное разрешение для mongodb. $ sudo chown -R mongod:mongod \ /var/run/mongodb/mongod.pid \ /tmp/mongodb-27017.sock \ /var/lib/mongo/

Если у нас есть другой сбой, такой как Error reading file /path/file: Permission denied, возможно, мы можем исправить это с помощью SELinux . $ sudo chcon -v -t mongod_var_lib_t /path/file

Кстати, я не рекомендую использовать разрешение 777, это так опасно.: P

0 голосов
/ 12 декабря 2011

Убедитесь, что пользователь Ubuntu mongo имеет доступ к файлу.Служба Ubuntu Mongo использует пользователя Ubuntu Mongo.Чтобы узнать имя пользователя mongo, перейдите в каталог / var / lib / mongodb и покажите права доступа: ls -l

...