Jag har problem med att starta mongod som en tjänst:Hur är det möjligt att det fungerar när jag gör sudo mongod -f /etc/mongod.conf men när jag startar den med sudo service mongod start får jag ett fel i loggen
sudo
kommandot startar mongod
med root
behörigheter (alias superanvändaråtkomst). Om du kör mongod
som en tjänst är användaren och gruppen konfigurerade i tjänstdefinitionen (mongodb
för båda i ditt exempel).
Det finns inget behov av att köra mongod
process som root
användare, och detta avråds starkt enligt den vanliga säkerhetspraxisen enligt principen om minsta privilegium.
Om du vill testa en konfiguration från kommandoraden kan du använda sudo
att köra med en angiven användare istället för standardanvändaren (root).
Till exempel:
sudo -u mongodb mongod -f /etc/mongod.conf
I allmänhet är det bäst att använda en tjänstkonfiguration istället för att köra mongod
manuellt. Med manuell anrop måste du också komma ihåg att inkludera parametrar som konfigurationsfilens sökväg (eftersom det inte finns någon standard konfigurationssökväg). Utan en konfigurationsfil, mongod
använder också standardalternativ som en dbPath
av /data/db
.
Påstående:28595:13:Tillstånd nekad src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp 267
Den troliga orsaken till dina behörighetsfel är att du tidigare har startat mongod
som root
användare. Vissa kataloger och filer kan nu ägas av root-användaren, så mongodb
användaren kan inte komma åt dessa. Ditt specifika fel relaterar till åtkomst till filer i datakatalogen (dvs. den konfigurerade storage.dbPath
i mongod.conf
).
Förutsatt att du inte har ändrat standardsökvägarna i din mongod.conf
fil, bör du rekursivt kunna justera behörigheter för att matcha vad mongod.service
definition förväntar sig.
Se först till att du har stoppat din mongod
instans om den körs för närvarande.
Justera sedan rekursivt behörigheter till den förväntade användaren och gruppen:
# storage.dbPath
sudo chown -R mongodb:mongodb /var/lib/mongodb
# systemLog.path
sudo chown -R mongodb:mongodb /var/log/mongodb
Nu bör du kunna starta mongod
som en tjänst. Om tjänsten inte startar bör det finnas ytterligare detaljer i mongod
loggfil (förutsatt att loggfilen är skrivbar av mongodb
tjänstanvändare).