Вопрос или проблема
Когда я пытаюсь запустить MongoDB, я получаю следующую ошибку:
# mongo
MongoDB shell version: 3.2.6
connecting to: test
2016-05-21T16:14:31.183+0300 W NETWORK [thread1] Не удалось подключиться к 127.0.0.1:27017, причина: errno:111 Connection refused
2016-05-21T16:14:31.183+0300 E QUERY [thread1] Ошибка: не удалось подключиться к серверу 127.0.0.1:27017, попытка подключения не удалась:
connect@src/mongo/shell/mongo.js:229:14
@(connect):1:6
exception: connect failed
После этого я начал разбираться и узнал, что сначала нужно запустить сервер MongoDB с помощью команды mongod
. Но когда я это делаю, ошибка появляется снова:
# mongod
2016-05-21T16:19:15.410+0300 I CONTROL [initandlisten] MongoDB запускается: pid=32019 port=27017 dbpath=/data/db 64-bit host=ibrahim-Inspiron-3542
2016-05-21T16:19:15.410+0300 I CONTROL [initandlisten] версия базы данных v3.2.6
2016-05-21T16:19:15.410+0300 I CONTROL [initandlisten] git версия: 05552b562c7a0b3143a729aaa0838e558dc49b25
2016-05-21T16:19:15.410+0300 I CONTROL [initandlisten] OpenSSL версия: OpenSSL 1.0.2g-fips 1 Mar 2016
2016-05-21T16:19:15.410+0300 I CONTROL [initandlisten] allocator: tcmalloc
2016-05-21T16:19:15.410+0300 I CONTROL [initandlisten] модули: нет
2016-05-21T16:19:15.410+0300 I CONTROL [initandlisten] окружение сборки:
2016-05-21T16:19:15.410+0300 I CONTROL [initandlisten] distmod: ubuntu1404
2016-05-21T16:19:15.410+0300 I CONTROL [initandlisten] distarch: x86_64
2016-05-21T16:19:15.410+0300 I CONTROL [initandlisten] target_arch: x86_64
2016-05-21T16:19:15.410+0300 I CONTROL [initandlisten] опции: {}
2016-05-21T16:19:15.451+0300 I STORAGE [initandlisten] исключение в initAndListen: 29 Директория данных /data/db не найдена., завершение работы
2016-05-21T16:19:15.451+0300 I CONTROL [initandlisten] dbexit: rc: 100
Я пытаюсь запустить службу mongod в консоли:
# service mongod start
Failed to start mongod.service: Unit mongod.service not found.
Что мне делать?
Мой английский не так хорош, пожалуйста, ответьте на этот вопрос простым английским.
Следующий шаг — убедиться, что у вас есть файл единицы для службы.
Выполните эту команду:
ls /lib/systemd/system
Если вы увидите mongod.service, значит, все должно быть в порядке. Если вам нужно знать, как должен выглядеть этот файл, посмотрите это руководство.
Теоретически, это должно быть последнее, что вам нужно сделать, чтобы все заработало.
По сути, это просто файл, который указывает системе, как приводить службу в различные состояния, и небольшие действия по уборке, которые необходимо выполнить.
Ответ находится в вашем лог-файле, так как там сказано /data/db не найдена
, просто создайте файл /data/db
.
Ответ или решение
Чтобы решить проблему с ошибкой при запуске службы MongoDB на Ubuntu 16.04, рассмотрим несколько возможных причин и шагов по их устранению.
Анализ проблемы
-
Ошибка подключения к MongoDB:
Вы столкнулись с ошибкой подключения к локальному серверу MongoDB по адресу127.0.0.1:27017
. Это происходит, потому что сервер MongoDB не запущен. -
Ошибка при запуске
mongod
:
При попытке запуска MongoDB через командуmongod
вы получаете сообщение, что отсутствует директория/data/db
. Это стандартная директория по умолчанию для хранения данных MongoDB. -
Отсутствие службы
mongod
:
Сообщение об отсутствииmongod.service
указывает на то, что служба MongoDB не настроена или неправильно установлена.
Шаги по решению проблемы
-
Создание директории для данных:
Так как MongoDB в версии 3.2.6 по умолчанию использует/data/db
для хранения данных, необходимо создать эту папку и обеспечить ей правильные права доступа:sudo mkdir -p /data/db sudo chown -R $(whoami) /data/db
-
Проверка установки MongoDB:
Убедитесь, что MongoDB установлена корректно. Используйте следующие команды для проверки:mongod --version
Если MongoDB не установлена, выполните установку:
sudo apt update sudo apt install -y mongodb
-
Настройка службы systemd (если требуется):
Еслиmongod.service
отсутствует, возможно, MongoDB была установлена без настройки службы вsystemd
. Попробуйте создать файл службы вручную:Создайте файл службы:
sudo nano /lib/systemd/system/mongod.service
Вставьте следующий контент в файл:
[Unit] Description=MongoDB Database Server After=network.target [Service] User=mongodb ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf [Install] WantedBy=multi-user.target
Сохраните изменения и выйдите из редактора.
-
Перезапуск и проверка службы:
Выполните команды для перезапуска службы и проверки её статуса:sudo systemctl daemon-reload sudo systemctl start mongod sudo systemctl enable mongod sudo systemctl status mongod
-
Проверка подключения:
Убедитесь, что MongoDB работает, попробовав подключиться к ней:mongo
Заключение
Следуя этим инструкциям, вы должны успешно запустить и подключиться к MongoDB. Убедитесь, что у вас установлены соответствующие пакеты и настроены все необходимые директории. Если проблема сохраняется, убедитесь, что все шаги выполнены корректно, особенно создание и настройка системного файла службы.