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

Oggi sto usando il mio nuovo Mac per la prima volta. Sto seguendo la guida introduttiva su mongodb.org fino al passaggio in cui si crea la directory / data / db. btw, ho usato la rotta homebrew.

Così apro un terminale e penso di essere in quella che hai chiamato la Home Directory, perché quando faccio “ls”, vedo cartelle di applicazioni desktop, film, documenti e libreria di immagini musicali.

Così ho fatto a

mkdir -p /data/db 

in primo luogo, dice il permesso negato. Ho continuato a provare cose diverse per metà e ora e infine:

 mkdir -p data/db 

lavorato. e quando I “ls”, esiste una directory di dati e nidificata in essa esiste una cartella db.

poi accendo mongod e si lamenta di non aver trovato dati / db

Ho fatto qualcosa di sbagliato?

Ora ho fatto il

 sudo mkdir -p /data/db 

e quando faccio un “ls” vedo la directory dei dati e la directory db. all’interno del db dir però, non c’è assolutamente nulla in esso e quando ora eseguo mongod

 Sun Oct 30 19:35:19 [initandlisten] exception in initAndListen: 10309 Unable to create/open lock file: /data/db/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating Sun Oct 30 19:35:19 dbexit: Sun Oct 30 19:35:19 [initandlisten] shutdown: going to close listening sockets... Sun Oct 30 19:35:19 [initandlisten] shutdown: going to flush diaglog... Sun Oct 30 19:35:19 [initandlisten] shutdown: going to close sockets... Sun Oct 30 19:35:19 [initandlisten] shutdown: waiting for fs preallocator... Sun Oct 30 19:35:19 [initandlisten] shutdown: lock for final commit... Sun Oct 30 19:35:19 [initandlisten] shutdown: final commit... Sun Oct 30 19:35:19 [initandlisten] shutdown: closing all files... Sun Oct 30 19:35:19 [initandlisten] closeAllFiles() finished Sun Oct 30 19:35:19 [initandlisten] shutdown: removing fs lock... Sun Oct 30 19:35:19 [initandlisten] couldn't remove fs lock errno:9 Bad file descriptor Sun Oct 30 19:35:19 dbexit: really exiting now 

MODIFICA Ottenendo messaggio di errore per

 sudo chown mongod:mongod /data/db chown: mongod: Invalid argument 

Grazie a tutti!

Hai creato la directory nel posto sbagliato

/ data / db significa che è direttamente nella directory root ‘/’, mentre tu hai creato ‘data / db’ (senza il leading /) probabilmente solo all’interno di un’altra directory, come la directory ‘/ root’.

È necessario creare questa directory come root

O è necessario utilizzare sudo , ad esempio sudo mkdir -p /data/db

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


Nota:

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


Modificare:

il messaggio di errore che si ottiene è “Imansible creare / aprire il file di blocco: /data/db/mongod.lock errno: 13 Autorizzazione negata” . La directory creata 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 /’, fai questo: (questo è come dovrebbero apparire le autorizzazioni e la 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 le autorizzazioni per Utente, Gruppo e Altro. ‘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 le autorizzazioni e la proprietà sopra, fai questo :

Innanzitutto controlla quali utenti e gruppi hanno 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, dato che è 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: (possono essere trovati in / etc / passwd e / etc / group)

 sudo chown -R mongod:mongod /data/db 

quello 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 login. I demoni dovrebbero idealmente non avere una shell per motivi di sicurezza, ecco perché vedi / bin / false nella grep del file password sopra.

Controlla qui per capire meglio il significato delle autorizzazioni di directory:

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

Forse controlla anche uno dei tutorial che puoi trovare su Google: “UNIX per principianti”

Dopo aver ricevuto lo stesso errore di Nik

chown: id -u: argomento non valido

Ho scoperto che questo apparentemente si è verificato utilizzando il tipo sbagliato di virgolette (dovevano essere stati backquotes ) Forum di Ubuntu

Invece ho solo usato

sudo chown $ USER / data / db

come alternativa e ora mongod ha i permessi necessari.

Questo funziona per me, trovato nei commenti:

 sudo chown -R $USER /data/db 

Crea la cartella.

 sudo mkdir -p /data/db/ 

Datti il ​​permesso alla cartella.

 sudo chown `id -u` /data/db 

Quindi puoi eseguire mongod senza sudo . Funziona su OSX Yosemite

Per correggere quell’errore su OS X, ho riavviato e interrotto il servizio: $ brew services restart mongodb $ brew services stop mongodb

Poi ho eseguito mongod --config /usr/local/etc/mongod.conf , e il problema era sparito.

L’errore sembrava sorgere dopo l’aggiornamento del pacchetto homebrew mongodb.

Installazione tramite brew su Mac dove YOUR_USER_NAME e staff sono il gruppo

 sudo mkdir -p /data/db sudo chmod +x+r+w /data/db/ sudo touch /data/db/mongod.lock sudo chown YOUR_USER_NAME:staff /data/db sudo chmod +x+r+w /data/db/mongod.lock sudo chown YOUR_USER_NAME:staff /data/db/mongod.lock 

Se si esegue mongo senza argomenti, si presume che si stia eseguendo sul computer di produzione in modo che utilizzi le posizioni predefinite.

per usare il tuo database personale (dev o solo uno diverso):

 ./bin/mongod --dbpath ~/data/db 

Ho superato lo stesso identico problema creando le cartelle / data / db con il mio window manager. Ho provato a farlo inizialmente con il terminale e, per creare una cartella nella directory principale, ho dovuto usare sudo.

Sono appena entrato nella directory principale usando Finder e ho creato una nuova cartella usando ‘Nuova cartella’. Completamente ha funzionato per me.

Nota: sto usando OSX.

Il tuo comando avrà creato la struttura delle directory nella cartella corrente, non la directory root del tuo computer (che è ciò che manca / è).

Il primo comando era giusto, ma poiché stai provando a creare una cartella in / , che è una directory protetta, devi prefissarlo con sudo , che è l’abbreviazione di “superuser do”. Ti verrà quindi richiesta la tua password.

Quindi il comando completo sarebbe:

 $ sudo mkdir -p /data/db 

Devi creare / data / db … che è una directory chiamata / data / nella tua root (ie / ) e sottocartella in là chiamata / db /

Stai ricevendo degli errori di authorization perché devi usare sudo per creare una direcotry nella tua directory principale in MacOS, sudo ti permette di eseguire comandi come amministratore.

Quindi, esegui questo invece …

 $ sudo mkdir -p /data/db 

Questo ti richiederà una password, è la stessa password che usi per cambiare le impostazioni di sistema (quella piccola finestra che si apre quando provi a cambiare le cose in Preferenze di Sistema per ecample), e probabilmente la stessa che usi per accedere.

Ho avuto questo problema con una configurazione Mongodb esistente. Non sono ancora sicuro del motivo per cui è successo, ma per qualche motivo il processo di Mongod non è riuscito a trovare il file mongod.config. Perché non è riuscito a trovare il file di configurazione ha cercato di trovare i file DB in / data / db, una cartella che non esisteva. Tuttavia, il file di configurazione era ancora disponibile, quindi mi sono assicurato che il processo avesse le autorizzazioni per il file di configurazione ed eseguivo il processo mongod con il flag –config come segue:

 mongod --config /etc/mongod.conf 

Nel file di configurazione stesso ho avuto questa impostazione:

 storage: dbPath: /var/lib/mongodb 

E questo è come il processo potrebbe trovare nuovamente la vera cartella DB.

Stai cercando di creare una directory a cui non hai accesso come root.

Per testare mongodb, uso solo una directory dalla mia directory utente come:

 cd mkdir -p temp/ mongod --dbpath . 

Questo renderà un database mongo in temp / dalla tua attuale directory di lavoro

Solo una breve nota:

Se hai provato a eseguire mongod senza prima modificare le autorizzazioni, probabilmente avrai un file mongod.lock (e alcuni altri file) nella directory / data / db. Anche dopo aver modificato le autorizzazioni per la directory / data / db per accedere al tuo $ USER, continuerai a ricevere il file “Imansible creare / aprire il blocco: /data/db/mongod.lock errno: 13 Autorizzazione negata “errore. Esegui ls -al / data / db e probabilmente vedrai che le autorizzazioni per i singoli file sono ancora impostate come root per utente, non per $ USER. Dovresti rimuovere il file mongod.lock e anche gli altri. Quindi, quando esegui di nuovo mongod, tutto dovrebbe funzionare, e puoi verificare che i permessi dei file corrispondano ai permessi della directory eseguendo di nuovo ls -al.

L’ho fatto

 brew install mongodb 

il 2018-02-01 e questo mi ha dato la versione 3.6.2 di mongodb.

Spinto dalla risposta di orluke sopra, ho provato solo

 $ brew services restart mongodb 

e tutto è nato nella vita. La mia chiamata mongoose.createConnection() fatto ciò che volevo. La GUI MongoDB Compass , la versione della comunità, si connetterebbe. Ho usato Compass per esaminare la collezione local.startup_log . C’era un documento in, il registro di me che stava appena iniziando il servizio mongoDB, e questo era accaduto

 cmdLine:Object config:"/usr/local/etc/mongod.conf" 

e infatti c’era un tale file:

 $ more /usr/local/etc/mongod.conf systemLog: destination: file path: /usr/local/var/log/mongodb/mongo.log logAppend: true storage: dbPath: /usr/local/var/mongodb net: bindIp: 127.0.0.1 

e c’era una /usr/local/var/mongodb con molti file oscuri. Quindi sembra che l’installazione funzioni ora.

Non sono sicuro che se i brew services restart impostano il servizio da eseguire all’accesso. Così ho fatto

 brew services stop mongodb brew services start mongodb 

e spero che lo riavvii dopo il riavvio. E, infatti, lo ha fatto. In effetti, ora, penso che la cosa giusta da fare dopo l’installazione iniziale sia

 brew services start mongodb 

e che dovrebbe avviare il servizio e riavviarlo dopo il riavvio.

Digita “id” sul terminale per vedere gli ID utente disponibili che puoi fornire, quindi digita semplicemente

“sudo chown -R idname / data / db”

Questo ha funzionato per me! Spero che questo risolva il tuo problema.

In più versioni attuali di MongoDB, ho 3.2.10, è archiviato come predefinito in

/var/lib/mongodb