Ошибка "Не удалось отсоединить файл сокета" в MongoDB 3.0

Я новичок в MongoDB. Я пытаюсь установить MongoDb 3.0 на Ubuntu 13.0 LTS, который является виртуальной машиной на хосте Windows 7. Я успешно установил MongoDB (пакеты и т.д.), Но когда я выполняю команду sudo service mongod start, я получаю следующую ошибку в файле журнала /var/log/mongodb/mongod.log. Может ли кто-нибудь помочь мне понять эту ошибку. В интернете нет ничего, что связано с этим.

2015-04-23T00: 12: 00.876-0400 я CONTROL ***** SERVER RESTARTED ***** 2015-04-23T00: 12: 00.931-0400 E NETWORK [initandlisten] Не удалось отсоединить сокет файл /tmp/mongodb -27017.sock errno: 1 Операция не разрешена 2015-04-23T00: 12: 00.931-0400 я - [initandlisten] Фатальное утверждение 28578 2015-04-23T00: 12: 00.931-0400 я - [initandlisten]

Ответ 1

Я сам исправил эту проблему, удалив файл mongodb-27017.sock. Я запустил службу после удаления этого файла, который работал нормально. Тем не менее, я до сих пор не уверен в первопричине проблемы. Вывод команды ls - lat /tmp/mongodb-27017.sock теперь

srwx------ 1 mongodb nogroup 0 Apr 23 06:24 /tmp/mongodb-27017.sock

Ответ 2

Альтернативный ответ, предоставленный KurioZ7, вы можете просто установить разрешения файла .sock для текущего пользователя:

sudo chown `whoami` /tmp/mongodb-27017.sock

Это делает трюк для меня, если я хочу запустить mongod без sudo. Если я удалю файл, как в KurioZ7s, ответьте, я просто получу ту же ошибку при следующем запуске моей машины.

Ответ 3

Наиболее вероятной причиной этого было то, что процесс mongod был в какой-то момент начат пользователем root. Поэтому файл сокета (/tmp/mongodb-27017.sock) принадлежал пользователю root. Процесс mongod обычно работает под собственным выделенным пользователем, и у этого пользователя не было прав на удаление этого файла.

Решение, как вы уже выяснили, состояло в его удалении. Тогда mongodb смог воссоздать его с правильными разрешениями. Это должно сохраняться после перезагрузки, если mongodb запускается с использованием сценариев инициализации или под правильной учетной записью пользователя.

Ответ 4

Эта проблема возникает, если вы используете команду

mongod

Перед использованием команды

sudo service mongod start

Чтобы устранить проблему, выполните следующие действия:

Задайте соответствующие разрешения для файла:

/tmp/mongodb-27017.sock

ИЛИ

Удалите файл

/tmp/mongodb-27017.sock

Запустить

sudo service mongod start && mongod

Ответ 5

$ sudo mongod

он решает проблему для меня

Ответ 6

Для UNIX-ориентированных операционных систем в качестве альтернативы ответом, предоставленным Bastronaut, вы также можете указать файл .sock для сохранения в папку, в которой mongod имеет полные права пользователя (в соответствии с тем, как вы используете mongod), таким образом, mongod также сможет удалить файл .sock при завершении работы. Папка по умолчанию, в которую сохраняется файл .sock, - '/tmp'. Чтобы указать другую папку, используйте настраиваемый файл конфигурации mongodb, например "mongodb.conf", и добавьте к нему следующее:

net:
  unixDomainSocket:
    pathPrefix: "anotherFolder"

После этого вы можете запустить mongod с помощью команды:

$ mongod --config /path/to/mongodb.conf

Вы можете прочитать документацию по адресу: https://docs.mongodb.org/manual/reference/configuration-options/#net.unixDomainSocket.pathPrefix

Ответ 7

Я новичок в CentOS и MongoDB. Когда я даю "Mongo" для запуска демона, я получаю следующую ошибку. Может кто-нибудь, пожалуйста, направьте меня к поиску решения для этого. Попробуйте следующие команды, чтобы попытаться подключить его к серверу. 1. sudo service mongod start 2. запуск mongodb.service 3. sudo mongod все было напрасно !!

"2019-04-28T20: 07: 19.772 + 0530 E QUERY [thread1] Ошибка: не удалось подключиться к серверу 127.0.0.1:27017, попытка подключения не удалась: [email protected]/mongo/shell/mongo.js: 229: 14 @(подключение): 1: 6 "Это мое сообщение об ошибке