sql >> Databáze >  >> NoSQL >> MongoDB

mongodb 3.4.3 Oprávnění odepřeno wiredtiger_kv_engine.cpp Chyba 267 s ubuntu 16

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).



  1. Jak mohu spustit redis na jednom serveru na různých portech?

  2. Řetězec Node.js Mongoose.js na funkci ObjectId

  3. První kroky s Redis

  4. Jednoduché použití EM::Synchrony#sync způsobuje 'kořenové vlákno' FiberError -- moje chyba?