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

Mongod si lamenta che non esiste la cartella /data/db

Hai creato la directory nel posto sbagliato

/data/db significa che si trova direttamente nella directory principale '/', mentre hai creato 'data/db' (senza la / iniziale) probabilmente solo all'interno di un'altra directory, come la directory home '/root'.

Devi creare questa directory come root

O devi usare sudo , per esempio. sudo mkdir -p /data/db

Oppure devi fare su - per diventare superutente, quindi creare la directory con mkdir -p /data/db

Nota:

MongoDB ha anche un'opzione in cui puoi creare la directory dei dati in un'altra posizione, ma in genere non è una buona idea, perché complica leggermente cose come il ripristino del DB, perché devi sempre specificare manualmente il percorso db. Non consiglierei di farlo.

Modifica:

il messaggio di errore che ricevi è "Impossibile creare/aprire il file di blocco:/data/db/mongod.lock errno:13 Permesso negato" . La directory che hai creato non sembra avere le autorizzazioni e la proprietà corrette:deve essere scrivibile dall'utente che esegue il processo MongoDB.

Per vedere le autorizzazioni e la proprietà della directory '/data/db/', procedere come segue:(questo è l'aspetto delle autorizzazioni e della proprietà)

$ ls -ld /data/db/
drwxr-xr-x 4 mongod mongod 4096 Oct 26 10:31 /data/db/

Il lato sinistro 'drwxr-xr-x' mostra i permessi per Utente, Gruppo e Altri. 'mongod mongod' mostra chi possiede la directory e a quale gruppo appartiene quella directory. Entrambi sono chiamati 'mongod' in questo caso.

Se la tua directory '/data/db' non ha i permessi e la proprietà di cui sopra, fallo :

Per prima cosa controlla quale utente e gruppo ha il tuo utente mongo:

# grep mongo /etc/passwd
mongod:x:498:496:mongod:/var/lib/mongo:/bin/false

Dovresti avere una voce per mongod in /etc/passwd , poiché è un demone.

sudo chmod 0755 /data/db
sudo chown -R 498:496 /data/db    # using the user-id , group-id

Puoi anche usare il nome utente e il nome del gruppo, come segue:(si possono trovare in /etc/passwd e /etc/group )

sudo chown -R mongod:mongod /data/db 

questo dovrebbe farlo funzionare..

Nei commenti qui sotto, alcune persone hanno usato questo:

sudo chown -R `id -u` /data/db
sudo chmod -R go+w /data/db

o

sudo chown -R $USER /data/db 
sudo chmod -R go+w /data/db

Lo svantaggio è che $USER è un account che ha una shell di accesso. Idealmente, i demoni non dovrebbero avere una shell per motivi di sicurezza, ecco perché vedi /bin/false nel grep del file della password sopra.

Controlla qui per comprendere meglio il significato dei permessi della directory:

http://www.perlfect.com/articles/chmod.shtml

Magari dai un'occhiata anche a uno dei tutorial che puoi trovare su Google:"UNIX per principianti"