MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

mongodb 3.4.3 Permesso negato wiredtiger_kv_engine.cpp 267 errore con Ubuntu 16

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