Mongod se queja de que no hay una carpeta /data/db
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!
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".
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.
Esto funciona para mí, lo encontré en los comentarios:
sudo chown -R $USER /data/db
Crea la carpeta.
sudo mkdir -p /data/db/
Date permiso para la carpeta.
sudo chown `id -u` /data/db
Entonces puedes correr mongod
sin sudo
. Funciona en OSX Yosemite
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.conf
y el problema desapareció.
El error pareció surgir después de actualizar el paquete homebrew mongodb.