sql >> Base de Datos >  >> NoSQL >> MongoDB

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

Creaste el directorio en el lugar equivocado

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

Necesitas crear este directorio como root

O necesitas usar sudo , p.ej. sudo mkdir -p /data/db

O necesitas hacer su - para convertirse en superusuario y luego crear el directorio con mkdir -p /data/db

Nota:

MongoDB también tiene una opción en la que puede 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 tiene 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 de MongoDB debe poder escribir en él.

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 Usuario, 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ía 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 usar el nombre de usuario y el nombre de grupo, de la siguiente manera:(pueden encontrarse 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 ve /bin/false en el grep del archivo de contraseña anterior.

Marque aquí para comprender mejor el significado de los permisos de 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"