Hoy estoy usando mi nueva Mac por primera vez. Estoy siguiendo la guía de inicio en mongodb.org hasta el paso donde se crea el directorio / data / db. por cierto, utilicé la ruta homebrew.
Así que abro una terminal y creo que estoy en lo que llamaron el Directorio de inicio, porque cuando hago "ls", veo carpetas de la aplicación 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 "ls", existe un directorio de datos y anida en él una carpeta db.
entonces 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. dentro del directorio db, sin embargo, 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 Obtener mensaje de error para
sudo chown mongod:mongod /data/db
chown: mongod: Invalid argument
¡Gracias a todos!
grep mongo /etc/passwd /etc/group
. Si eso no funciona, verifique el nombre comprobando el propietario del directoriols -ld /var/lib/mongo
. O para ver el UID / GID hacer esto:ls -lnd /var/lib/mongo
. En mi casodrwxr-xr-x. 6 *487 480* 4096 Sep 20 2011 ...
, esto significa usar 487: 480 como parámetroRespuestas:
Creaste el directorio en el lugar equivocado
/ data / db significa que está directamente debajo del directorio raíz '/', mientras que usted creó 'data / db' (sin el / / principal) probablemente solo dentro de otro directorio, como el directorio '/ root'.
Necesita crear este directorio como root
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 puede crear el directorio de datos en otra ubicación, pero generalmente no es una buena idea, ya que solo complica un poco las cosas, como la recuperación de la base de datos, porque siempre debe especificar la ruta db manualmente. No recomendaría hacer eso.
Editar:
el mensaje de error que está recibiendo 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 lo siguiente: (así deberían ser los permisos y la propiedad)
El lado izquierdo 'drwxr-xr-x' muestra los permisos para el Usuario, Grupo y Otros. 'mongod mongod' muestra quién posee el 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 lo siguiente :
Primero verifique qué usuario y grupo tiene su usuario mongo:
Debería tener una entrada para mongod en / etc / passwd, ya que es un demonio.
También puede usar el nombre de usuario y el nombre del grupo, de la siguiente manera: (se pueden encontrar en / etc / passwd y / etc / group)
eso debería hacerlo funcionar ...
En los comentarios a continuación, algunas personas usaron esto:
o
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ña anterior.
Marque aquí para comprender mejor el significado de los permisos del directorio:
http://www.perlfect.com/articles/chmod.shtml
Quizás también revise uno de los tutoriales que puede encontrar en Google: "UNIX para principiantes"
fuente
ls -ld /data/
yls -ld /data/db/
... verá los permisos del directorio listados en el lado izquierdo, luego la propiedad, luego el nombre del directorio. debe asegurarse de que los directorios sean editables por el ID de usuario que ejecuta MongoDB.invalid arguement
sudo touch /data/db/mongod.lock
ysudo chmod 0777 /data/db/mongd.lock
. Ella comenzó de inmediato.sudo chown -R `id -u` /data/db
o ensudo chown -R $USER /data/db
lugar desudo chown mongod:mongod /data/db
hacer el truco para míDespués de obtener el mismo error que Nik
Descubrí que esto aparentemente ocurrió al usar el tipo incorrecto de comillas (deberían haber sido comillas inversas ) Foros de Ubuntu
En cambio, solo usé
como alternativa y ahora mongod tiene los permisos que necesita.
fuente
Esto funciona para mí, que se encuentra en los comentarios:
fuente
Crea la carpeta.
Date permiso para la carpeta.
Entonces puedes correr
mongod
sin élsudo
. Funciona en OSX Yosemitefuente
bogdanmac:~ iliebogdanbarbulescu$ sudo chown `id -u` /data/db chown: /data/db: No such file or directory
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 mongodb homebrew.
fuente
Instalación a través de brew en Mac donde YOUR_USER_NAME y el personal es el grupo
fuente
/etc/passwd
nombre de usuario: es probable que el grupo sea idéntico. Por lo general, esmongo
omongodb
.Si ejecuta mongo sin argumentos, se supone que está ejecutando en la máquina de producción, por lo que utiliza las ubicaciones predeterminadas.
para usar su propia base de datos (dev o simplemente una diferente):
fuente
Tuve este problema con una configuración existente de Mongodb. Todavía no estoy seguro de por qué sucedió, pero por alguna razón el proceso Mongod no pudo encontrar el archivo mongod.config. Como no pudo encontrar el archivo de configuración, intentó encontrar los archivos DB en / data / db, una carpeta que no existía. Sin embargo, el archivo de configuración todavía estaba disponible, así que me aseguré de que el proceso tenga permisos para el archivo de configuración y ejecute el proceso mongod con el indicador --config de la siguiente manera:
En el archivo de configuración en sí tenía esta configuración:
Y así es como el proceso podría encontrar la carpeta DB real nuevamente.
fuente
yo hice
el 2018-02-01 y eso me dio la
mongodb
versión 3.6.2.Impulsado por la respuesta de orluke anterior, intenté solo
y todo saltó a la vida. Mi
mongoose.createConnection()
llamada hizo lo que quería. La GUI MongoDB Compass , la versión de la comunidad, se conectaría. Usé Brújula para mirar lalocal.startup_log
colección. Eso tenía un documento, el registro de mí solo comenzando el servicio mongoDB, y eso teníay de hecho había tal archivo:
y había un
/usr/local/var/mongodb
directorio con muchos archivos oscuros. Parece que así es como funciona la instalación ahora.No estoy seguro si
brew services restart
configura el servicio para que se ejecute al iniciar sesión. Así que lo hicey esperaba que volviera a comenzar después de reiniciar. Y, de hecho, lo hizo. De hecho, ahora, creo que lo correcto después de la instalación inicial es
y eso debería iniciar el servicio y reiniciarlo después de reiniciar.
fuente
Su comando habrá creado la estructura de directorios en la carpeta actual, no el directorio raíz de su computadora (que es lo que falta
/
).El primer comando era correcto, pero debido a que está tratando de crear una carpeta en
/
, que es un directorio protegido, debe agregarle un prefijosudo
, que es la abreviatura de "superuser do". Luego se le pedirá su contraseña.Entonces el comando completo sería:
fuente
Necesita crear / data / db ... que es un directorio llamado / data / en su raíz (es decir / ) y una subcarpeta allí llamada / db / ...
Obtendrá errores de permisos porque necesita usar sudo para crear un directorio en su directorio raíz en MacOS, sudo le permite ejecutar comandos como administrador.
Entonces, ejecuta esto en su lugar ...
Esto le pedirá una contraseña, es la misma contraseña que usa para cambiar la configuración del sistema (ese pequeño cuadro de diálogo que se abre cuando intenta cambiar las cosas en Preferencias del sistema para ecample), y probablemente la misma que usa para iniciar sesión.
fuente
Estás intentando crear un directorio al que no tienes acceso de root.
Para probar mongodb, solo uso un directorio de mi directorio de usuario como:
Esto hará una base de datos mongo en temp / desde su directorio de trabajo actual
fuente
Superé este mismo problema creando las carpetas / data / db con mi administrador de ventanas. Al principio intenté hacerlo a través del terminal, y para crear una carpeta en el directorio raíz, tuve que usar sudo.
Simplemente fui al directorio raíz usando Finder y creé una nueva carpeta usando 'Nueva carpeta'. Totalmente trabajado para mi.
Nota: estoy usando OSX.
fuente
Solo una nota rapida:
Si intentó ejecutar mongod sin cambiar primero los permisos, es probable que tenga un archivo mongod.lock (y algunos otros archivos) en el directorio / data / db. Incluso después de cambiar los permisos para el directorio / data / db para dar acceso a su $ USER, continuará recibiendo el mensaje "No se puede crear / abrir el archivo de bloqueo: /data/db/mongod.lock errno: 13 Permiso denegado "error. Ejecute ls -al / data / db y probablemente verá que los permisos para los archivos individuales todavía están configurados como root para el usuario, no para su $ USER. Debe eliminar el archivo mongod.lock y los demás también. Luego, cuando ejecute mongod nuevamente, todo debería funcionar, y puede verificar que los permisos del archivo coincidan con los permisos del directorio ejecutando ls -al nuevamente.
fuente
Crear directorio en la raíz
Ahora cambia el propietario
¡Eres bueno para ir!
en lugar de usar
sudo mongod
, no necesita poner una contraseña cada vez, pero para el proyecto real que debe usarsudo mongod
, ¡no le dé permiso al usuario normal!fuente
Seguí recibiendo el siguiente error cuando intenté iniciar mongodb.
Estaba usando el siguiente comando:
La solución para mí fue que no necesitaba el signo "=" y esto estaba causando el error. Así que lo hice
Solo quería lanzar esto porque el error de ninguna manera especifica que este sea el problema. Casi eliminé el contenido del directorio ~ / mongo-data para ver si eso ayudó. Me alegra haber recordado que cli args a veces no usa el signo "=".
fuente
Hasta esta fecha, también solía pensar que necesitamos crear esa carpeta / data / db para iniciar el comando mongod.
Pero recientemente intenté iniciar mongod con el comando de servicio y funcionó para mí y no había necesidad de crear el directorio / data / db.
Para verificar el estado de mongod, puede ejecutar el siguiente comando.
fuente
Esta solución resuelve mi problema
Hacer un directorio como
sudo mkdir -p / data / db
Eso creará un directorio llamado db y luego intentará comenzar con comandos
sudo mongod
Si obtiene otro error o problema al iniciar mongod, puede encontrar el problema como
y encuentre el puerto de ejecución mongod y elimine el proceso. Otra forma es hacer un puerto específico al iniciar mongod como
fuente
Escriba "id" en la terminal para ver los identificadores de usuario disponibles que puede dar, luego simplemente escriba
"sudo chown -R idname / data / db"
¡Esto funcionó para mí! Espero que esto resuelva tu problema.
fuente
En versiones más actuales de MongoDB, tengo 3.2.10, se almacena por defecto en
/var/lib/mongodb
fuente
mongod --dbpath /var/lib/mongodb
ayuda en estas circunstanciasDespués de (re) instalar el paquete de herramientas, recibí un error similar en un dispositivo con Windows 10;
Solución Análoga a la explicada para los sistemas Linux: simplemente hacer que la carpeta sea suficiente para poder iniciar el
mongod.exe
(servidor mongoDB).Pensé que podría dejarlo para las personas que terminan aquí con los mismos términos de búsqueda en un dispositivo Windows.
fuente
Solo quería señalar aquí que si intentas esto y te encuentras
mkdir: /data/db: Read-only file system
, mira este comentario, que me ayudó: https://stackoverflow.com/a/58895373 .De esa manera, si alguien está en esta respuesta y hace el Control F para "solo lectura", verán esto
fuente
Hay una forma realmente tonta de crear este problema, que he sido pionera:
1) deje su instalación de mongo por un tiempo 2) regrese y el servidor no se esté ejecutando 3) intente iniciarlo, pero no use sudo esta vez 4) mongo no puede encontrar datos / db / porque ahora está buscando el directorio de inicio del usuario en lugar de su directorio de inicio
Sí, es realmente tonto, pero si ha pasado un tiempo desde que estabas en el sistema, puede hacerte tropezar.
Respuesta corta: asegúrese de ejecutar mongo con el mismo directorio de inicio implícito
fuente