Sto riscontrando problemi con l'avvio di mongod come servizio:come è possibile che funzioni quando eseguo sudo mongod -f /etc/mongod.conf ma quando lo lancio con il servizio sudo mongod start ottengo un errore nel registro
Il sudo
comando avvia mongod
con root
autorizzazioni (ovvero accesso da superutente). Se esegui mongod
come servizio l'utente e il gruppo sono configurati nella definizione del servizio (mongodb
per entrambi nel tuo esempio).
Non è necessario eseguire mongod
processo come root
utente, e questo è fortemente sconsigliato secondo la pratica comune di sicurezza del Principio del privilegio minimo.
Se vuoi testare una configurazione dalla riga di comando, puoi usare sudo
da eseguire con un utente specificato invece dell'utente predefinito (root).
Ad esempio:
sudo -u mongodb mongod -f /etc/mongod.conf
In generale, è meglio utilizzare una configurazione di servizio piuttosto che eseguire mongod
manualmente. Con l'invocazione manuale dovrai anche ricordare di includere parametri come il percorso del file di configurazione (poiché non esiste un percorso di configurazione predefinito). Senza un file di configurazione, mongod
utilizza anche opzioni predefinite come un dbPath
di /data/db
.
Asserzione:28595:13:Autorizzazione negata src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp 267
La probabile causa dei tuoi errori di autorizzazione è l'aver avviato in precedenza mongod
come root
utente. Alcune directory e file ora possono essere di proprietà dell'utente root, quindi mongodb
l'utente non può accedervi. Il tuo errore specifico si riferisce all'accesso ai file nella directory dei dati (ovvero il storage.dbPath
configurato in mongod.conf
).
Supponendo che tu non abbia cambiato i percorsi predefiniti nel tuo mongod.conf
file, dovresti essere in grado di regolare ricorsivamente le autorizzazioni in modo che corrispondano a ciò che il mongod.service
la definizione si aspetta.
Per prima cosa, assicurati di aver fermato il tuo mongod
istanza se è attualmente in esecuzione.
Quindi, regola ricorsivamente le autorizzazioni per l'utente e il gruppo previsti:
# storage.dbPath
sudo chown -R mongodb:mongodb /var/lib/mongodb
# systemLog.path
sudo chown -R mongodb:mongodb /var/log/mongodb
Ora dovresti essere in grado di avviare mongod
come servizio. Se il servizio non si avvia, dovrebbero essere presenti ulteriori dettagli in mongod
log (supponendo che il file di log sia scrivibile da mongodb
utente del servizio).