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

MongoDB su Ubuntu non si avvierà come servizio, niente nel registro

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.