Impossibile creare / aprire il file di blocco: /data/mongod.lock errno: 13 Autorizzazione negata


187

Come ottenere mongo per utilizzare un'unità montata su ec2? Davvero non capisco. Ho collegato un volume su ec2 formattato l'unità come root e inizio come root e tuttavia come root non riesco ad accedere? Sono in esecuzione su Ubuntu 12.04. Nessun altro mongo è in esecuzione

Vedo che mongo ha creato una directory 'db' in / data cioè / data / db

cd /
ls -al
drwxr-xr-x  4 root root  4096 Mar  5 16:28 data

cd /data
ls -al
total 28
drwxr-xr-x  4 root root  4096 Mar  5 16:28 .
drwxr-xr-x 24 root root  4096 Mar  5 16:28 ..
drwxr-xr-x  2 root root  4096 Mar  5 16:28 db
drwx------  2 root root 16384 Mar  5 16:20 lost+found


sudo mkfs.ext3 /dev/xvdh
sudo mkdir /data
sudo su - -c 'echo "/dev/xvdh %s auto noatime 0 0" | sudo tee -a /etc/fstab'
sudo mount /data

sudo service mongodb start
mongodb start/running, process 17169

sudo ps -ef | grep mongod
ubuntu   15763 15634  0 16:32 pts/2    00:00:00 tail -f mongodb.log
ubuntu   18049 15766  0 16:43 pts/3    00:00:00 grep --color=auto mongod


Tue Mar  5 16:33:15 [initandlisten] MongoDB starting : pid=15890 port=27017 dbpath=/data 64-bit host=aws-mongo-server-east-staging-20130305161917
Tue Mar  5 16:33:15 [initandlisten] db version v2.2.3, pdfile version 4.5
Tue Mar  5 16:33:15 [initandlisten] git version: f570771a5d8a3846eb7586eaffcf4c2f4a96bf08
Tue Mar  5 16:33:15 [initandlisten] build info: Linux ip-10-2-29-40 2.6.21.7-2.ec2.v1.2.fc8xen #1 SMP Fri Nov 20 17:48:28 EST 2009 x86_64 BOOST_LIB_VERSION=1_49
Tue Mar  5 16:33:15 [initandlisten] options: { bind_ip: "10.157.60.27", config: "/etc/mongodb.conf", dbpath: "/data", logappend: "true", logpath: "/var/log/mongodb/mongodb.log", replSet: "heythat" }
Tue Mar  5 16:33:15 [initandlisten] exception in initAndListen: 10309 Unable to create/open lock file: /data/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating
Tue Mar  5 16:33:15 dbexit: 
Tue Mar  5 16:33:15 [initandlisten] shutdown: going to close listening sockets...
Tue Mar  5 16:33:15 [initandlisten] shutdown: going to flush diaglog...
Tue Mar  5 16:33:15 [initandlisten] shutdown: going to close sockets...
Tue Mar  5 16:33:15 [initandlisten] shutdown: waiting for fs preallocator...
Tue Mar  5 16:33:15 [initandlisten] shutdown: lock for final commit...
Tue Mar  5 16:33:15 [initandlisten] shutdown: final commit...
Tue Mar  5 16:33:15 [initandlisten] shutdown: closing all files...
Tue Mar  5 16:33:15 [initandlisten] closeAllFiles() finished
Tue Mar  5 16:33:15 [initandlisten] shutdown: removing fs lock...
Tue Mar  5 16:33:15 [initandlisten] couldn't remove fs lock errno:9 Bad file descriptor
Tue Mar  5 16:33:15 dbexit: really exiting now

Di seguito è se riavvio quando rimuovo un file di blocco ....

Tue Mar  5 16:59:15 [initandlisten] MongoDB starting : pid=21091 port=27017 dbpath=/data 64-bit host=aws-mongo-server-east-staging-20130305161917
Tue Mar  5 16:59:15 [initandlisten] db version v2.2.3, pdfile version 4.5
Tue Mar  5 16:59:15 [initandlisten] git version: f570771a5d8a3846eb7586eaffcf4c2f4a96bf08
Tue Mar  5 16:59:15 [initandlisten] build info: Linux ip-10-2-29-40 2.6.21.7-2.ec2.v1.2.fc8xen #1 SMP Fri Nov 20 17:48:28 EST 2009 x86_64 BOOST_LIB_VERSION=1_49
Tue Mar  5 16:59:15 [initandlisten] options: { bind_ip: "10.157.60.27", config: "/etc/mongodb.conf", dbpath: "/data", logappend: "true", logpath: "/var/log/mongodb/mongodb.log", replSet: "heythat" }
Tue Mar  5 16:59:15 [initandlisten] exception in initAndListen: 10309 Unable to create/open lock file: /data/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating
Tue Mar  5 16:59:15 dbexit: 
Tue Mar  5 16:59:15 [initandlisten] shutdown: going to close listening sockets...
Tue Mar  5 16:59:15 [initandlisten] shutdown: going to flush diaglog...
Tue Mar  5 16:59:15 [initandlisten] shutdown: going to close sockets...
Tue Mar  5 16:59:15 [initandlisten] shutdown: waiting for fs preallocator...
Tue Mar  5 16:59:15 [initandlisten] shutdown: lock for final commit...
Tue Mar  5 16:59:15 [initandlisten] shutdown: final commit...
Tue Mar  5 16:59:15 [initandlisten] shutdown: closing all files...
Tue Mar  5 16:59:15 [initandlisten] closeAllFiles() finished
Tue Mar  5 16:59:15 [initandlisten] shutdown: removing fs lock...
Tue Mar  5 16:59:15 [initandlisten] couldn't remove fs lock errno:9 Bad file descriptor
Tue Mar  5 16:59:15 dbexit: really exiting now

1
Sembra che mongod sia stato chiuso male l'ultima volta che è stato eseguito e non è stato in grado di ripulire il file mongod.lock che ha creato. Questo file esiste per impedire a più istanze di mongod di funzionare sul file. Se elimini il file e provi a eseguire di nuovo mongod, non dovresti avere problemi
ACE

2
Vedi domanda aggiornata. Stesso problema se rimuovi il file di blocco
Tampa

Sembra essere ancora un problema con il file di blocco, quali sono le autorizzazioni sulla directory in cui si trova il file di blocco? TBH L'ho visto solo in 2 casi: 1) il file di blocco esiste già e 2) mongod non ha i permessi per creare il file di blocco nella posizione desiderata.
ACE

1
Dovresti assicurarti che l'utente mongo abbia accesso chown mongodb:mongodb on /var/lib/monogdb, anche sulla directory dei dati.
Hans N. Hjort,

Risposte:


117

Stavo avendo lo stesso problema su un'istanza ec2 di Ubuntu. Stavo seguendo questo articolo di Amazon a pagina 7:

http://d36cz9buwru1tt.cloudfront.net/AWS_NoSQL_MongoDB.pdf

Il percorso Mongodb in è /etc/mongodb.confstato impostato su /var/lib/mongodb(posizione dell'installazione primaria e funzionante). Quando sono passato a /data/db(volume EBS) ho ricevuto "errno: 13 Autorizzazione negata".

  1. Prima ho corso sudo service mongodb stop.
  2. Poi ho ls -lavisto a quale gruppo e proprietario mongodb assegnato /var/lib/mongodb(percorso esistente) e ho cambiato il /data/db(nuovo percorso) con chowne chgrpper abbinarlo. (esempio sudo chown -R mongodb:mongodb /data/db:)
  3. Poi ho aggiornato il percorso etc/mongodb.confper /data/dbe cancellato i file mongo vecchi nella /var/lib/mongodbdirectory.
  4. Quindi ho corso sudo service mongodb starte atteso circa un minuto. Se provi a connetterti immediatamente al 27017, non sarai in grado di farlo.
  5. Dopo un minuto di controllo /data/db(volume EBS) e mongo dovrebbe aver inserito un giornale, mongod.lock, local.ns, local.0, ecc. In caso contrario, prova a sudo service mongodb restartcontrollare un minuto dopo.

Ho appena trascorso più di un'ora con questo. Cambiare il gruppo ed eliminare i vecchi file probabilmente non è necessario, ma è quello che ha funzionato per me.

Questo è un ottimo video sul montaggio di un volume ebs sull'istanza ec2:

http://www.youtube.com/watch?v=gBII3o3BofU


8
Stavo lottando con questo problema e mi sono reso conto che se elenchi la tua cartella di destinazione con ls -lahZ ti darà il contesto di sicurezza, il contesto per la cartella di dati mongo dovrebbe essere impostato come: "sudo chcon -R -u system_u -t mongod_var_lib_t / cartella / dati "oltre alle evidenti autorizzazioni e combinazione utente: gruppo. Spero che sia d'aiuto.
jmdiego,

478

Uso questo metodo per risolvere il problema:

sudo chown -R mongodb:mongodb /data/db

8
Aggiungi -Run'opzione ed è perfetto :)
Adrien,

7
cioè: sudo chown -R id -u/ data / db per i non iniziati. :)
rncrtr,

8
Si scopre che c'è un problema con i backtick. Prova a eseguire sudo chown $USER /data/dbinvece del comando originale.
Paymahn Moghadasian,

7
Questa è davvero la risposta corretta. @Tampa dovresti accettare questa risposta. btw - non hai bisogno del id -Uo $USERroba del genere. mongo ha il suo utente / gruppo. puoi e dovresti hard code mongodb: mongodb. quindi il comando è semplicementesudo chown -R mognodb:mognodb /data/db
guy mograbi,

11
Cosa fa effettivamente questo? Funziona, ma mi piacerebbe capire :)
zero_cool

81

Nel mio caso (istanza AWS EC2, Ubuntu) ho aiutato:

$ sudo mkdir -p /data/db/
$ sudo chown `USERNAME` /data/db

E dopo tutto ha funzionato bene.


6
Questa è la risposta migliore, molto probabilmente è un problema di autorizzazioni con l'utente che esegue mongod
davo

2
Sì, questa è la risposta migliore
Vegan Sv

1
Stiamo cambiando / trasferendo la proprietà di /data/dbaUSERNAME
Saif

52

Devi solo dare accesso alla tua /data/dbcartella.

Digita sudo chown -R <USERNAME> /data/db, sostituisci <USERNAME>con il tuo nome utente.

Puoi trovare il tuo nome utente digitando whoami.



10

Avevo un problema simile, il vero motivo era che c'era già una sessione di mongod in esecuzione dal mio precedente tentativo.

Ho corso

killall mongod

e tutto il resto ha funzionato esattamente come previsto.

killallil comando invierebbe un segnale TERM a tutti i processi con un UID reale. Quindi questo uccide tutte le istanze in esecuzione di mongod in modo da poter iniziare da solo.


Questa è letteralmente la risposta più breve e l'unica risposta che ha risolto il mio problema dopo innumerevoli ore ... grazie!
Moomoochen,

Sono contento che abbia aiutato! :) Vorrei che ci fosse modo di aiutare le persone a trovare questa risposta più facilmente.
Venky Soorisetty,

7

Ad oggi, ho cercato di farmi strada nel creare / aprire il file di blocco: /data/db/mongod.lock errno: 13 Autorizzazione negata È già in esecuzione un'istanza di mongod ? , terminando , e ho provato tutte le risposte postate sopra risolvere questo problema, quindi non è stato risolto nulla aggiungendo

sudo chown -R mongodb: mongodb / data / db

A meno che non abbia aggiunto la mia attuale autorizzazione utente al percorso della posizione da

sudo chown $ USER / data / db

Spero che questo aiuti qualcuno. Inoltre ho appena installato Mongo DB sul mio pi. Saluti!


Questa è la vera soluzione al problema
Sahil Nagpal

6

Ho avuto un problema simile e ho seguito tutte le istruzioni sopra per quanto riguarda il cambio di proprietario usando sudo chown ecc. Avevo ancora un'istanza di mongodb in esecuzione in background dopo le modifiche. In esecuzione

ps auxw | grep mongo 

mi ha mostrato altri compiti usando mongo in esecuzione in background che non erano chiusi correttamente. Ho quindi eseguito kill su tutti quelli in esecuzione e quindi ho potuto avviare il mio server.


6

Per utenti mac:
Esegui ls -ld / data / db / L'
output dovrebbe essere qualcosa di simile a drwrx-xr-x 20 singh wheel 680 21 lug 05:49 / data / db /
Dove singh è il proprietario e wheel è il gruppo a cui appartiene .
Run sudo chown -R singh: wheel / data / db
Run mongod


5

Rimozione del file mongodb.lock non è stato il problema nel mio caso. L'ho fatto e ho ricevuto un errore riguardo alla porta in uso: [initandlisten] hear (): bind () non riuscito errno: 98 Indirizzo già in uso per socket: 0.0.0.0:27017. Ho trovato un'altra soluzione qui: impossibile avviare il server locale mongodb con le istruzioni per terminare il processo:

  1. Scopri da netstat quale processo esegue la porta mongodb (27017)

    sudo netstat -tulpn | grep :27017

    L'output sarà: tcp 0 0 0.0.0.0:27017 0.0.0.0:* ASCOLTA 1412 / mongod

  2. Uccidi il processo appropriato.

    sudo kill 1412 (sostituisci 1412 con il tuo ID processo trovato nel passaggio 1)

E sono stato in grado di riavviare con successo mongodb. Credo che il mio stesse ancora correndo da un arresto improprio.


4

Per quelli di voi che hanno riscontrato questo errore su Windows utilizzando Task Manager, chiudono l'istanza di "mongod.exe" in esecuzione. Una volta fatto ciò, eliminare definitivamente il file mongo.lock ed eseguire mongod.exe. Dovrebbe funzionare perfettamente dopo quello.


4

Il mio mongo (3.2.9) era installato su Ubuntu e il mio file di registro aveva le seguenti linee:

2016-09-28T11:32:07.821+0100 E STORAGE  [initandlisten] WiredTiger (13) [1475058727:821829][6785:0x7fa9684ecc80], file:WiredTiger.wt, connection: /var/lib/mongodb/WiredTiger.turtle: handle-open: open: Permission denied 
2016-09-28T11:32:07.822+0100 I -        [initandlisten] Assertion: 28595:13: Permission denied 
2016-09-28T11:32:07.822+0100 I STORAGE  [initandlisten] exception in initAndListen: 28595 13: Permission denied, terminating

28/09/2016 T11: 32: 07.822 + 0100 I CONTROL [initandlisten] dbexit: rc: 100

Quindi il problema era nelle autorizzazioni sulla cartella / var / lib / mongodb.

sudo chown -R mongodb:mongodb /var/lib/mongodb/
sudo chmod -R 755 /var/lib/mongodb
  • Riavvia il server

Risolto il problema, anche se mi rendo conto che potrebbe non essere troppo sicuro (è la mia casella di sviluppo sono nel mio caso), a seguito del cambiamento sia il db che l'autenticazione hanno funzionato.


2

In Mycase In mongodb
versione 2.6.11 la directory databse predefinita è/var/lib/mongodb/

  1. $ sudo chown -R id -u/ var / lib / mongodb /

  2. $ sudo chown -R id -u/var/lib/mongodb/mongod.lock

  3. $ sudo /etc/init.d/mongod stop

  4. $ sudo /etc/init.d/mongod start


dovrebbe essere `id -u`
marcus

2

Ho avuto lo stesso problema quando ho eseguito il comando mongod dopo averlo installato su Windows10. Ho interrotto il servizio mongodb e l'ho riavviato. Funzionando come un incanto

Comando per interrompere il servizio mongodb (in Windows): net stop mongodb

Comando per avviare il server mongodb: mongod --dbpath PATH_TO_DATA_FOLDER


1

Su un'istanza Fedora 18 con Mongo 2.2.4 sono stato in grado di aggirare un errore simile disabilitando SELinux chiamando setenforce 0 come root.

A proposito, questo era un ambiente aziendale, non un'istanza Amazon EC2, ma i sintomi erano simili.


1

Nel mio caso il problema è stato risolto rimuovendo il file di registro .

sudo rm /log/mongod.log

Sebbene il messaggio di errore si riferisca specificamente al file di blocco :

exception in initAndListen: 10309 Unable to create/open lock file: 
/data/mongod.lock errno:13 Permission denied 
Is a mongod instance already running?, terminating

Questo mi ha indicato nella giusta direzione. Sul mio server ho dovuto eseguire sudo rm /var/log/mongodb/mongodb.log e sudo rm /tmp/mongodb-27017.sock.
Keith John Hutchison,

1

Dopo aver ucciso mongod, ho avuto lo stesso problema: non potevo iniziare mongod.

$> sudo kill `pidof mongod`

2015-08-03T05:58:41.339+0000 [initandlisten] exception in initAndListen: 10309 Unable to create/open lock file: /data/mongodbtest/replset/data/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating

Dopo aver eliminato il blocco direttamente, posso riavviare il processo mongod.

$>  rm -rf /data/mongodbtest/replset/data/mongod.lock

1

Questo è quello che ho fatto per risolvere il problema:

$ sudo mkdir -p / data / db

$ export PATH = / usr / local / Cellar / mongodb / 3.0.7 / bin: $ PATH

$ sudo chown -R id -u / data / db

e poi per iniziare mongo ...

$ mongod


1

Ho avuto lo stesso problema.

L'ho risolto cambiando lo stato di selinux in permissivo con il comando seguente:

setenforce 0

0

Fare ls -laconoscere l'utente e il gruppo di / var / log / MongoDB. Quindi eseguire sudo chown -R user:group /data/db ora sudo service mongodb start. Controlla lo stato consudo service mongodb status



0

Puoi provare in questi modi. 1 °.

sudo chown -R mongod: mongod / data / db

ma a volte, questo non è utile. 2 °. se il modo sopra non è utile, puoi provare a fare questo:

mkdir / data / db #come percorso di archiviazione del database

nohup mongod --dbpath / data / db &

o digitare:

mongod --dbpath / data / db

per ottenere il flusso di output


Considerando che questa è una vecchia domanda e la tua risposta non aggiunge nulla che non sia già lì, dovresti chiederti se è prezioso ...
Nic3500

0

Per me su CentOS 6.x:

sudo chown -R mongodb:mongodb <db-path> sudo service mongod restart

E io ho posto una consuetudine db-pathin /etc/mongod.conf.



0

Nel server Centos

questo funziona per me

chown -R mongod:mongod /var/lib/mongo

0

Si è verificato un errore simile, risolto rimuovendo tutti i record (nella mia cartella del caso journalse file mongo.lock...), dopo che controlla la porta con sudo lsof -i:27017, se smth è in esecuzione su di esso kill <PID of the process>, e prova a eseguirlo di ./mongodnuovo


-2

fix: sudo mongod

Ho avuto lo stesso problema, correndo mongod con i privilegi di sudo è stato risolto. Venendo da un ambiente Windows, ho usato solomongod per avviare il demone, beh sembra che abbiamo bisogno dei privilegi di superutente per accedere a / data / db.

È inoltre possibile concedere agli utenti non root autorizzazioni di lettura e scrittura per quel percorso. controlla le risposte sopra per una guida!


L'esecuzione di mongod come root non è necessaria e potrebbe rendere il sistema più vulnerabile agli exploit
qbert220

-2

Ogni volta che tenti di avviare mongod, digita

sudo mongod

o se vuoi risolverlo permanentemente, prova a dare premessa rwx alla cartella / data / db

 chmod +rwx data/

Nessuna di queste è una buona idea. Il primo potrebbe rendere il sistema più vulnerabile agli exploit di sicurezza. Il secondo potrebbe consentire agli utenti non privilegiati di manomettere i database mongo
qbert220
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.