No se puede crear / abrir el archivo de bloqueo: /data/mongod.lock errno: 13 Permiso denegado

187

¿Cómo consigo que mongo use una unidad montada en ec2? Realmente no entiendo. ¿He adjuntado un volumen en ec2 formateado el disco como root e inicio como root y sin embargo como root no puedo acceder? Estoy corriendo en ubuntu 12.04. No hay otro mongo corriendo

Veo que Mongo creó un directorio 'db' en / data, es decir, / 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

A continuación se muestra si reinicio cuando elimino un archivo de bloqueo ...

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
Tampa
fuente
1
Parece que mongod se cerró mal la última vez que se ejecutó y no pudo limpiar el archivo mongod.lock que creó. Este archivo existe para evitar que varias instancias mongod funcionen en el archivo. Si elimina el archivo e intenta ejecutar mongod nuevamente, no debería tener problemas
ACE
2
Ver pregunta actualizada. Mismo problema si elimina el archivo de bloqueo
Tampa
Parece seguir siendo un problema con el archivo de bloqueo, ¿cuáles son los permisos en el directorio en el que se encuentra el archivo de bloqueo? TBH Solo he visto esto en 2 casos: 1) el archivo de bloqueo ya existe y 2) mongod no tiene permisos para crear el archivo de bloqueo en la ubicación deseada.
ACE
1
Debe asegurarse de que el usuario de mongo tenga acceso chown mongodb:mongodb on /var/lib/monogdb, también en el directorio de datos.
Hans N. Hjort

Respuestas:

117

Estaba teniendo el mismo problema en una instancia de Ubuntu ec2. Estaba siguiendo este artículo de Amazon en la página 7:

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

La ruta de Mongodb en /etc/mongodb.confse estableció en /var/lib/mongodb(ubicación de instalación principal y en funcionamiento). Cuando cambié a /data/db(volumen EBS) recibí 'errno: 13 Permiso denegado'.

  1. Primero corrí sudo service mongodb stop.
  2. Luego solía ls -laver a qué grupo y propietario se asignaba mongodb /var/lib/mongodb(ruta existente) y cambié la /data/db(nueva ruta) con chowny chgrppara que coincida. (ejemplo: sudo chown -R mongodb:mongodb /data/db)
  3. A continuación, he actualizado la ruta en la etc/mongodb.confque /data/dby sean eliminados los antiguos archivos mongo en el /var/lib/mongodbdirectorio.
  4. Luego corrí sudo service mongodb starty esperé alrededor de un minuto. Si intentas conectarte a 27017 de inmediato, no podrás hacerlo.
  5. Después de un minuto de verificación /data/db(volumen EBS) y mongo deberían haber colocado un diario, mongod.lock, local.ns, local.0, etc. Si no es así, intente sudo service mongodb restartverificar un minuto más tarde.

Acabo de pasar más de una hora con esto. Probablemente no sea necesario cambiar el grupo y eliminar los archivos antiguos, pero eso fue lo que funcionó para mí.

Este es un gran video sobre cómo montar un volumen ebs en la instancia ec2:

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

Randy Swanson
fuente
8
Estaba luchando con este problema, y ​​me di cuenta de que si enumeras tu lista de carpetas de destino con ls -lahZ te dará el contexto de seguridad, el contexto para la carpeta de datos de mongo debería establecerse como: "sudo chcon -R -u system_u -t mongod_var_lib_t / folder / data "esto además de los permisos obvios y la combinación usuario: grupo. Espero eso ayude.
jmdiego
478

Yo uso este método para resolver el problema:

sudo chown -R mongodb:mongodb /data/db
Haimei
fuente
8
Agregue una -Ropción y es perfecta :)
Adrien
77
eso es: sudo chown -R id -u/ data / db para los no iniciados. :)
rncrtr
8
Resulta que hay un problema con los backticks. Intente ejecutar en sudo chown $USER /data/dblugar del comando original.
Paymahn Moghadasian
77
Esta es de hecho la respuesta correcta. @Tampa deberías aceptar esta respuesta. por cierto, no necesitas el id -Uo $USERcosas. mongo tiene su propio usuario / grupo. puedes y debes codificar mongodb: mongodb. así que el comando es simplementesudo chown -R mognodb:mognodb /data/db
guy mograbi
11
¿Qué hace esto realmente? Funciona, pero me encantaría entender :)
zero_cool
81

En mi caso (instancia de AWS EC2, Ubuntu) ayudó:

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

Y después de eso todo funcionó bien.

Belhor
fuente
66
Esta es la mejor respuesta, es muy probable que sea un problema de permisos con el usuario que ejecuta mongod
davo
2
Sí, esta es la mejor respuesta
Vegan Sv
1
Estamos cambiando / transfiriendo la propiedad de /data/dbaUSERNAME
Saif
52

Solo tiene que dar acceso a su /data/dbcarpeta.

Escriba sudo chown -R <USERNAME> /data/db, reemplace <USERNAME>por su nombre de usuario.

Puede encontrar su nombre de usuario escribiendo whoami.

julien bouteloup
fuente
12

Instalé mongodb con EBS en un EC2 con Ubuntu 14.04 siguiendo este tutorial:

http://docs.mongodb.org/ecosystem/platforms/amazon-ec2/

Pero en lugar del vestido sugerido que hice:

sudo chown -R mongodb:mongodb /data /log /journal

Para solucionar el problema

Evers
fuente
2
Sí, parece que el propietario debe ser "mongodb" en lugar de algo "raíz".
Imskull
10

Tuve un problema similar, la razón real fue que ya había una sesión mongod ejecutándose desde mi intento anterior.

Yo corri

killall mongod

y todo lo demás funcionó como se esperaba.

killallEl comando enviaría una señal TERM a todos los procesos con un UID real. Entonces, esto mata todas las instancias en ejecución de mongod para que puedas comenzar la tuya.

Venky Soorisetty
fuente
Esta es literalmente la respuesta más corta y la única respuesta que resolvió mi problema después de incontables horas ... ¡gracias!
moomoochen
Me alegro de que haya ayudado! :) Deseo que haya una manera de ayudar a las personas a encontrar esta respuesta más fácilmente.
Venky Soorisetty
7

A partir de hoy, intenté abrirme paso para crear / abrir el archivo de bloqueo: /data/db/mongod.lock errno: 13 Permiso denegado ¿Ya se está ejecutando una instancia de mongod ? , finalizando , e intenté todas las respuestas publicadas anteriormente para resolver este problema, por lo tanto, nada funcionó agregando

sudo chown -R mongodb: mongodb / data / db

A menos que agregue mi permiso de usuario actual a la ruta de ubicación por

sudo chown $ USER / data / db

Espero que esto ayude a alguien. También acabo de instalar Mongo DB en mi pi. ¡Salud!

Abdullah
fuente
Esta es la solución real al problema
Sahil Nagpal
6

Tuve un problema similar y seguí todas las instrucciones anteriores sobre el cambio de propietarios usando sudo chown, etc. Todavía tenía una instancia de mongodb ejecutándose en segundo plano después de los cambios. Corriendo

ps auxw | grep mongo 

me mostró otras tareas usando mongo ejecutándose en segundo plano que no se cerraron correctamente. Luego ejecuté kill en todos los que se estaban ejecutando y luego pude iniciar mi servidor.

Eugene G
fuente
6

Para usuarios de mac:
Ejecute ls -ld / data / db /
Output debería ser algo así como drwrx-xr-x 20 singh wheel 680 21 jul 05:49 / data / db /
Donde singh es el propietario y wheel es el grupo al que pertenece .
Ejecute sudo chown -R singh: wheel / data / db
Run mongod

amanSingh
fuente
5

Eliminar el archivo mongodb.lock no fue el problema en mi caso. Lo hice y recibí un error acerca de que el puerto estaba en uso: [initandlisten] listen (): bind () falló errno: 98 Dirección ya en uso para el socket: 0.0.0.0:27017. Encontré otra solución aquí: no se puede iniciar el servidor local mongodb con instrucciones para matar el proceso:

  1. Descubra en netstat qué proceso ejecuta el puerto mongodb (27017)

    sudo netstat -tulpn | grep :27017

    La salida será: tcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN 1412 / mongod

  2. Mata el proceso apropiado.

    sudo kill 1412 (reemplace 1412 con su ID de proceso que se encuentra en el paso 1)

Y pude iniciar con éxito mongodb nuevamente. Creo que el mío seguía huyendo de un cierre inadecuado.

Casey Murray
fuente
4

Para aquellos de ustedes que experimentan este error en Windows usando el Administrador de tareas, finalice la instancia de "mongod.exe" que se está ejecutando. Una vez hecho esto, elimine permanentemente el archivo mongo.lock y ejecute mongod.exe. Debería funcionar perfectamente después de eso.

b_kik
fuente
4

Mi mongo (3.2.9) estaba instalado en Ubuntu, y mi archivo de registro tenía las siguientes líneas:

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

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

Entonces, el problema estaba en los permisos en la carpeta / var / lib / mongodb.

sudo chown -R mongodb:mongodb /var/lib/mongodb/
sudo chmod -R 755 /var/lib/mongodb
  • Reiniciar el servidor

Lo solucioné, aunque me doy cuenta de que puede no ser demasiado seguro (es mi propio cuadro de desarrollo en mi caso), poco después del cambio, tanto db como la autenticación funcionaron.

Néstor Milyaev
fuente
2

En Mycase
En mongodb la versión 2.6.11 el directorio predeterminado de databse es/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

vijay
fuente
debería ser `id -u`
marcus
2

Tuve el mismo problema cuando ejecuté el comando mongod después de instalarlo en Windows10. Detuve el servicio mongodb y lo comencé de nuevo. Trabajando como un encanto

Comando para detener el servicio mongodb (en windows): net stop mongodb

Comando para iniciar el servidor mongodb: mongod --dbpath PATH_TO_DATA_FOLDER

aditya
fuente
1

En una instancia de Fedora 18 con Mongo 2.2.4 pude evitar un error similar al desactivar SELinux llamando setenforce 0como root.

Por cierto, este era un entorno corporativo, no una instancia de Amazon EC2, pero los síntomas eran similares.

GSP
fuente
1

En mi caso, el problema se resolvió eliminando el archivo de registro .

sudo rm /log/mongod.log

Aunque el mensaje de error se refiere específicamente al archivo de bloqueo :

exception in initAndListen: 10309 Unable to create/open lock file: 
/data/mongod.lock errno:13 Permission denied 
Is a mongod instance already running?, terminating
Ian Mercer
fuente
Esto me señaló en la dirección correcta. EN mi servidor tuve que hacer sudo rm /var/log/mongodb/mongodb.log y sudo rm /tmp/mongodb-27017.sock.
Keith John Hutchison el
1

Después de matar a mongod, tuve el mismo problema: no pude iniciar 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

Después de eliminar el bloqueo directamente, puedo reiniciar el proceso mongod.

$>  rm -rf /data/mongodbtest/replset/data/mongod.lock
Andy Dong
fuente
1

Esto es lo que hice para solucionar el problema:

$ sudo mkdir -p / data / db

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

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

y luego comenzar mongo ...

$ mongod

usuario4660857
fuente
1

Yo tuve el mismo problema.

Lo resolví cambiando el estado de selinux a permisivo con el siguiente comando:

setenforce 0
Maryam Jafari
fuente
0

Para ls -laconocer el usuario y el grupo de / var / log / mongodb. Entonces sudo chown -R user:group /data/db ahora corre sudo service mongodb start. Verifique el estado consudo service mongodb status

Tasneem Haider
fuente
0

En Windows, asegúrese de que la consola se inicie como administrador

Iacobescu Radu
fuente
0

Podrías intentar de esta manera. 1er.

sudo chown -R mongod: mongod / data / db

pero a veces, esto no es útil. 2do. Si la forma anterior no es útil, puede intentar hacer esto:

mkdir / data / db # como la ruta de almacenamiento de la base de datos

nohup mongod --dbpath / data / db &

o escriba:

mongod --dbpath / data / db

para obtener la secuencia de salida

Wotchin
fuente
Teniendo en cuenta que esta es una pregunta antigua, y su respuesta no agrega nada que aún no esté allí, debe preguntarse si es valioso ...
Nic3500
0

Para mí en CentOS 6.x:

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

Y he establecido una costumbre db-pathen /etc/mongod.conf.

yangsibai
fuente
0

En servidor Centos

esto funciona para mi

chown -R mongod:mongod /var/lib/mongo
Rajiv Sharma
fuente
0

Obtuve un error similar, solucionado con la eliminación de todos los registros (en mi directorio journalsy archivo de casos mongo.lock...), después de ese puerto de verificación con sudo lsof -i:27017, si algo se está ejecutando en él kill <PID of the process>, e intenta ejecutar de ./mongodnuevo

chavy
fuente
-2

Reparar: sudo mongod

Tuve el mismo problema, ejecutar mongod con privilegios de sudo lo solucionó. Viniendo de un entorno de Windows, solía mongodiniciar el demonio, bueno, parece que necesitamos los privilegios de superusuario para acceder a / data / db.

También puede otorgar a los usuarios no root permisos de lectura y escritura para esa ruta. ¡Consulte las respuestas anteriores para obtener una guía!

aimuhire
fuente
Ejecutar mongod como root no es necesario y puede hacer que el sistema sea más vulnerable a los exploits
qbert220
-2

Cada vez que cuando intentas iniciar mongod solo escribes

sudo mongod

o si desea arreglar esto permanentemente, simplemente intente otorgarle permiso de rwx a la carpeta / data / db

 chmod +rwx data/
Shishir
fuente
Ninguno de estos es una buena idea. El primero podría hacer que el sistema sea más vulnerable a las vulnerabilidades de seguridad. El segundo podría permitir a los usuarios no privilegiados alterar sus bases de datos mongo
qbert220