Mongod se queja de que no hay una carpeta /data/db

Resuelto Nik So asked hace 13 años • 28 respuestas

Estoy usando mi nueva Mac por primera vez hoy. Estoy siguiendo la guía de introducción en mongodb.org hasta el paso en el que se crea el directorio /data/db. Por cierto, utilicé la ruta casera.

Entonces abro una terminal y creo que estoy en lo que llamaste Directorio de inicio, porque cuando hago "ls", veo carpetas de aplicaciones de escritorio, películas, música, imágenes, documentos y biblioteca.

Entonces hice un

mkdir -p /data/db

Primero, dice permiso denegado. Seguí probando cosas diferentes durante media hora y finalmente:

mkdir -p data/db

trabajó. y cuando hago "ls", existe un directorio de datos y una carpeta db anidada en él.

luego enciendo mongod y se queja de no encontrar datos/db

¿Hice algo malo?

Ahora he hecho el

sudo mkdir -p /data/db

y cuando hago un "ls" veo el directorio de datos y el directorio db. Sin embargo, dentro del directorio db, no hay absolutamente nada en él y cuando ahora ejecuto 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

EDITAR Obteniendo mensaje de error para

sudo chown mongod:mongod /data/db

chown: mongod: Invalid argument

¡Gracias a todos!

Nik So avatar Oct 31 '11 06:10 Nik So
Aceptado

Creaste el directorio en el lugar equivocado.

/data/db significa que está directamente bajo el directorio raíz '/', mientras que usted creó 'data/db' (sin el / inicial) probablemente justo dentro de otro directorio, como el directorio de inicio '/root'.

Necesitas crear este directorio como raíz.

O necesitas usar sudo, por ejemplosudo mkdir -p /data/db

O debe hacerlo su -para convertirse en superusuario y luego crear el directorio conmkdir -p /data/db


Nota:

MongoDB también tiene una opción donde puedes crear el directorio de datos en otra ubicación, pero generalmente no es una buena idea, porque complica un poco cosas como la recuperación de la base de datos, porque siempre tienes que especificar la ruta de la base de datos manualmente. No recomendaría hacer eso.


Editar:

el mensaje de error que recibe es "No se puede crear/abrir el archivo de bloqueo: /data/db/mongod.lock errno:13 Permiso denegado" . El directorio que creó no parece tener los permisos y la propiedad correctos; el usuario que ejecuta el proceso MongoDB debe poder escribirlo.

Para ver los permisos y la propiedad del directorio '/data/db/', haga esto: (así es como deberían verse los permisos y la propiedad)

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

El lado izquierdo 'drwxr-xr-x' muestra los permisos para el usuario, el grupo y otros. 'mongod mongod' muestra quién es el propietario del directorio y a qué grupo pertenece ese directorio. Ambos se llaman "mongod" en este caso.

Si su directorio '/data/db' no tiene los permisos y la propiedad anteriores, haga esto :

Primero verifique qué usuario y grupo tiene su usuario mongo:

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

Deberías tener una entrada para mongod en /etc/passwd , ya que es un demonio.

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

También puede utilizar el nombre de usuario y el nombre de grupo, de la siguiente manera: (se pueden encontrar en /etc/passwd y /etc/group )

sudo chown -R mongod:mongod /data/db 

eso debería hacer que funcione..

En los comentarios a continuación, algunas personas usaron esto:

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

La desventaja es que $USER es una cuenta que tiene un shell de inicio de sesión. Idealmente, los demonios no deberían tener un shell por razones de seguridad, es por eso que ves /bin/false en el grep del archivo de contraseñas anterior.

Consulte aquí para comprender mejor el significado de los permisos del directorio:

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

Tal vez también consulte uno de los tutoriales que puede encontrar a través de Google: "UNIX para principiantes".

Tilo avatar Oct 31 '2011 00:10 Tilo

Después de recibir el mismo error que Nik

chown: id -u: argumento no válido

Descubrí que esto aparentemente ocurrió por usar el tipo incorrecto de comillas (deberían haber sido comillas invertidas ) Foros de Ubuntu

En lugar de eso solo usé

sudo chown $USUARIO /datos/db

como alternativa y ahora mongod tiene los permisos que necesita.

jagough avatar Apr 10 '2012 23:04 jagough

Esto funciona para mí, lo encontré en los comentarios:

sudo chown -R $USER /data/db
Iman Mohamadi avatar Apr 17 '2015 13:04 Iman Mohamadi

Crea la carpeta.

sudo mkdir -p /data/db/

Date permiso para la carpeta.

sudo chown `id -u` /data/db

Entonces puedes correr mongodsin sudo. Funciona en OSX Yosemite

Connor Leech avatar Jul 24 '2015 17:07 Connor Leech

Para corregir ese error en OS X, reinicié y detuve el servicio: $ brew services restart mongodb $ brew services stop mongodb

Luego corrí mongod --config /usr/local/etc/mongod.confy el problema desapareció.

El error pareció surgir después de actualizar el paquete homebrew mongodb.

orluke avatar Apr 28 '2016 15:04 orluke