Mám problémy se spuštěním mongod jako služby:Jak je možné, že to funguje, když udělám sudo mongod -f /etc/mongod.conf, ale při jeho spuštění se službou sudo mongod start se zobrazí chyba v protokolu
sudo
příkaz spustí mongod
s root
oprávnění (neboli superuživatelský přístup). Pokud spustíte mongod
jako služba jsou uživatel a skupina nakonfigurováni v definici služby (mongodb
pro oba ve vašem příkladu).
Není potřeba spouštět mongod
zpracovat jako root
uživatele, a to se podle běžné bezpečnostní praxe principu nejmenšího oprávnění důrazně nedoporučuje.
Pokud chcete otestovat konfiguraci z příkazového řádku, můžete použít sudo
spustit se zadaným uživatelem namísto výchozího (root) uživatele.
Například:
sudo -u mongodb mongod -f /etc/mongod.conf
Obecně je nejlepší použít konfiguraci služby spíše než spouštět mongod
ručně. Při ručním vyvolání budete muset také pamatovat na zahrnutí parametrů, jako je cesta ke konfiguračnímu souboru (protože neexistuje žádná výchozí konfigurační cesta). Bez konfiguračního souboru, mongod
také používá výchozí možnosti, jako je dbPath
z /data/db
.
Tvrzení:28595:13:Povolení odepřeno src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp 267
Pravděpodobnou příčinou vašich chyb oprávnění je dřívější spuštění mongod
jako root
uživatel. Některé adresáře a soubory mohou být nyní vlastněny uživatelem root, takže mongodb
uživatel k nim nemá přístup. Vaše konkrétní chyba se týká přístupu k souborům v datovém adresáři (tj. nakonfigurovaný storage.dbPath
v mongod.conf
).
Za předpokladu, že jste nezměnili výchozí cesty v mongod.conf
měli byste být schopni rekurzivně upravit oprávnění tak, aby odpovídala tomu, co má mongod.service
definice očekává.
Nejprve se ujistěte, že jste zastavili mongod
instance, pokud je aktuálně spuštěn.
Potom rekurzivně upravte oprávnění očekávanému uživateli a skupině:
# storage.dbPath
sudo chown -R mongodb:mongodb /var/lib/mongodb
# systemLog.path
sudo chown -R mongodb:mongodb /var/log/mongodb
Nyní byste měli být schopni spustit mongod
jako službu. Pokud se služba nespustí, měly by být další podrobnosti v mongod
soubor protokolu (za předpokladu, že do souboru protokolu lze zapisovat pomocí mongodb
uživatel služby).