Подтвердить что ты не робот

Mongodb 3.4.3 Разрешение отклонено wiredtiger_kv_engine.cpp 267 ошибка с ubuntu 16

У меня возникли проблемы с lauging mongod как службой: Как это возможно, если он работает, когда я делаю sudo mongod -f/etc/mongod.conf, но при запуске с помощью sudo service mongod start я получаю сообщение об ошибке в журнале

Assertion: 28595:13: Permission denied src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp 267

Я запускаю mongodb на ubuntu 16

Я выполнил именно инструкции в документации mongodb для установки этой версии, так это ошибка? Любые предложения, как решить эту проблему, оцениваются.

Дополнительная информация:

Запуск службы mongodb script выглядит так и запускается как пользователь mongodb, может ли это быть связано с ошибкой? Библиотека/Systemd/система/mongodb.service:

[Unit]
Description=MongoDB Database Service
Wants=network.target
After=network.target

[Service]
ExecStart=/usr/bin/mongod --config /etc/mongod.conf
ExecReload=/bin/kill -HUP $MAINPID
Restart=always
User=mongodb
Group=mongodb
StandardOutput=syslog
StandardError=syslog

[Install]
WantedBy=multi-user.target
4b9b3361

Ответ 1

У меня возникли проблемы с lauging mongod в качестве сервиса: как это возможно, если он работает, когда я делаю sudo mongod -f/etc/mongod.conf, но при запуске с помощью sudo service mongod start я получаю сообщение об ошибке в журнале

Команда sudo запускает mongod с разрешениями root (aka доступ к суперпользователю). Если вы запустите mongod в качестве службы, пользователь и группа настроены в определении службы (mongodb для обоих в вашем примере).

Нет необходимости запускать процесс mongod в качестве пользователя root, и это настоятельно не рекомендуется в соответствии с общей практикой безопасности Принцип минимальные привилегии.

Если вы хотите проверить конфигурацию из командной строки, вы можете использовать sudo для запуска с указанным пользователем, а не с пользователем по умолчанию (root).

Например:

sudo -u mongodb mongod -f /etc/mongod.conf 

В общем, лучше использовать конфигурацию службы, а не запускать mongod вручную. При ручном вызове вам также придется помнить о включении таких параметров, как путь к файлу конфигурации (поскольку путь по умолчанию отсутствует). Без файла конфигурации mongod также использует параметры по умолчанию, такие как dbPath /data/db.

Утверждение: 28595: 13: разрешение отклонено src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp 267

Вероятная причина ошибок вашего разрешения в том, что ранее была запущена mongod в качестве пользователя root. Некоторые каталоги и файлы теперь могут принадлежать пользователю root, поэтому пользователь mongodb не может получить к ним доступ. Ваша конкретная ошибка связана с доступом к файлам в каталоге данных (т.е. Настроенному storage.dbPath в mongod.conf).

Предполагая, что вы не изменили пути по умолчанию в вашем файле mongod.conf, вы должны иметь возможность рекурсивно настраивать разрешения для соответствия ожидаемому определению mongod.service.

Сначала убедитесь, что вы остановили свой экземпляр mongod, если он в данный момент запущен.

Затем рекурсивно отредактируйте разрешения для ожидаемого пользователя и группы:

# storage.dbPath
sudo chown -R mongodb:mongodb /var/lib/mongodb

# systemLog.path
sudo chown -R mongodb:mongodb /var/log/mongodb

Теперь вы можете запустить mongod в качестве службы. Если служба не запускается, в файле журнала mongod должна быть подробная информация (при условии, что файл журнала доступен для записи пользователем службы mongodb).

Ответ 2

Иметь такую ​​же проблему.

Что было в /var/log/mongodb/mongod.log:

2017-05-13T13:46:41.152+0700 E STORAGE  [initandlisten] WiredTiger error (13) [1494658001:152518][15821:0x7fb843803cc0], connection: /var/lib/mongodb/journal/WiredTigerPreplog.0000000002: file-remove: unlink: Permission denied
2017-05-13T13:46:41.159+0700 I -        [initandlisten] Assertion: 28595:13: Permission denied src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp 267

Итак, видим, что что-то не может удалить файл "WiredTigerPreplog.0000000002" в /var/lib/mongodb/journal/ Так что id просто дал разрешения, я просто сделал:

sudo chmod 764 /var/lib/mongodb/journal/

Если это не поможет, попробуйте:

sudo chown -R mongodb:mongodb /var/lib/mongodb/ && sudo chmod 764 /var/lib/mongodb/journal/

Ответ 3

Там три настройки, которые запускают эту проблему:

  • Установка MongoDB настроена на создание файлов базы данных по заданному пути, и этот путь не существует в вашей текущей системе. Этот путь называется dbpath в mongo.

В вашем случае проверьте, существует ли /data/db. Если это не так, или если он пуст, mongod пытается ошибиться в dbpath. Вам нужно найти его, обычно под /var/lib/mongodb.

Как только вы нашли там две вещи, которые вы можете сделать. Сначала скопируйте все файлы туда /data/db. Во-вторых, измените свой dbpath в файле mongod.conf, который находится (в linux) в /etc/mongod.conf. Обязательно запустите mongod с --config, указав конфигурационный файл.

  1. У MongoDB нет разрешения на чтение одного или нескольких файлов или каталогов, соответствующих его dbpath.

chown mongodb:mongodb dbpath -R.

  1. MongoDB отсутствует WiredTiger.wt. Это может произойти, если вы удаляете файлы под dbpath или если есть сбой устройства. Мы делаем это для тестирования стратегии восстановления, например.

Если вы уверены, что dbpath верен и что там нет экземпляра WiredTiger.wt. Ваша база данных не работает. Нет способа гарантировать целостность, если вы потеряете этот файл. Переустановите mongodb:

sudo apt-get purge mongodb-org*

sudo rm -r dbpath

sudo apt-get install mongodb-org

Изменить: Или скопируйте dbpath из одной из ваших реплик.

Ответ 4

Я хочу добавить комментарий к предыдущему ответу, но, к сожалению, пока не могу.

Я полностью согласен с объяснением Стенни. Это именно то, что случилось со мной. Я всегда запускал mongod как услугу, но сегодня, потому что некоторые изменения, которые я сделал, я попытался запустить процесс, используя sudo mongod --auth --dbpath /data/mongodb/.. для проверки разрешений и изменения местоположения db. После этого служба mongod больше не запускалась из-за этой проблемы с разрешениями.

Я должен сказать, что команда sudo chown -R mongodb:mongodb /data/mongodb/ не сразу исправила проблему, как ожидалось. Мне пришлось перезагружаться несколько раз, удалять файл mongod.lock в /data/mongodb/, снова переиздавать команду sudo chown.. и, наконец, все прошло хорошо.