Имам проблеми със стартирането на mongod като услуга:Как е възможно да работи, когато направя sudo mongod -f /etc/mongod.conf, но когато го стартирам със sudo service mongod start получавам грешка в дневника
sudo
командата стартира mongod
с root
разрешения (известен още като достъп на суперпотребител). Ако стартирате 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
потребител на услугата).