OK, tutto questo si riduce alle autorizzazioni, ma procediamo passo dopo passo. Quando esegui sudo mongod
non carica affatto un file di configurazione, inizia letteralmente con le impostazioni predefinite compilate - porta 27017, percorso del database di /data/db ecc. - ecco perché hai ricevuto l'errore di non essere in grado di trovare quella cartella. Il "predefinito Ubuntu" viene utilizzato solo quando lo punti al file di configurazione (se inizi a utilizzare il comando di servizio, questo viene fatto per te dietro le quinte).
Quindi l'hai eseguito in questo modo:
sudo mongod -f /etc/mongodb.conf
Se non c'erano problemi prima, allora ci saranno ora:hai eseguito il processo, con la tua configurazione normale (che punta al tuo solito dbpath e log) come utente root. Ciò significa che ora ci saranno un certo numero di file in quella normale cartella MongoDB con l'utente:gruppo di root:root
.
Ciò causerà errori quando si tenta di avviarlo nuovamente come un normale servizio, perché l'utente mongodb (come il servizio tenterà di eseguire) non avrà l'autorizzazione per accedere a quei root:root
file e, in particolare, probabilmente non sarà in grado di scrivere nel file di registro per fornirti alcuna informazione.
Pertanto, per eseguirlo come un normale servizio, è necessario correggere tali autorizzazioni. Innanzitutto, assicurati che MongoDB non sia attualmente in esecuzione come root, quindi:
cd /var/log/mongodb
sudo chown -R mongodb:mongodb .
cd /var/lib/mongodb
sudo chown -R mongodb:mongodb .
Questo dovrebbe risolverlo (supponendo che user:group sia mongodb:mongodb
), anche se probabilmente è meglio verificare con un ls -al
o simili per essere sicuri. Una volta eseguita questa operazione, dovresti essere in grado di riavviare il servizio correttamente.