Sistema de archivos de solo lectura al intentar mkdir / data / db en Mac


Respuestas:


141

Si tiene Mac y ha actualizado a Catalina, la carpeta raíz ya no se puede escribir.

Acabo de cambiar el directorio en otro lugar.

He estado usando este comando por ahora

mongod --dbpath=/Users/user/data/db

4
¿Hay alguna forma de hacerlo permanente? ¡Tengo que escribirlo cada vez que inicio el servidor MongoDB!
AV Paul

2
@AVPaul Quizás no sea la mejor solución, pero podrías crear un alias que se refiera a tu ruta.
DjangoBlockchain

1
@JeffGoes Supongo que no reemplazó al usuario con el nombre real.
Aman

2
@AlexL También me está funcionando. Pero, ¿tengo que escribir mongod --dbpath = / Users / my_USER_name / data / db cada vez que quiero ejecutar mi dev mongo db? Porque la próxima vez que ejecute mongod, dice / data / db not found
Shoeb Mirza

3
puede hacerlo permanente configurando dbPath en el archivo de configuración mongoDB si está usando mac, está en /usr/local/etc/mongod.conf. luego agregue lo siguiente: "almacenamiento: dbPath: ruta a su directorio db"
Samoox

76

de los documentos oficiales https://docs.mongodb.com/manual/tutorial/install-mongodb-on-os-x/

instalar homebrew y ejecutar los siguientes comandos

sudo chown -R $(whoami) $(brew --prefix)/*

entonces

brew tap mongodb/brew

entonces

brew install mongodb-community@4.2

y

brew services start mongodb-community

o

mongod --config /usr/local/etc/mongod.conf

entonces

ps aux | grep -v grep | grep mongod

y

mongo

para verificar que puede ejecutar show dbsen el shell mongo


15

Con la nueva actualización de macOS Catalina, la carpeta /data/dbpasa a ser de solo lectura, no puede modificarla. Siga este procedimiento para crear una base de datos en otra carpeta:

  1. Cambiar mongoddirectorio:

    sudo mongod --dbpath /System/Volumes/Data/data/db

  2. Dale un alias para usarlo como mongod:

    alias mongod="sudo mongod --dbpath /System/Volumes/Data/data/db"

  3. Simplemente escriba mongodsu terminal, debería funcionar.

Extra => Si necesita otorgarle derechos de usuario actuales, use esta línea de código:

sudo chown -R $(whoami) /System/Volumes/Data/data/db

(Solo para información -> $(whoami)es solo una variable que devuelve su usuario actual)


11

Para hacer un cambio permanente del camino de mongod db carpeta .

Siguiendo estos documentos , dicen aproximadamente esto. Si mongod se inicia con servicios de preparación:

$ brew services start mongodb-community@4.2

Utilizará el archivo de configuración en la ruta /usr/local/etc/mongod.conf


Para solucionar esto, edite el archivo de configuración:

$ vim /usr/local/etc/mongod.conf

Y cambie el dbPathejemplo a su directorio de inicio de esta manera:

systemLog:
  destination: file
  path: /usr/local/var/log/mongodb/mongo.log
  logAppend: true
storage:
  dbPath: /Users/<username>/data/db
net:
  bindIp: 127.0.0.1 

Guarde el archivo y reinicie mongod con brew:

$ brew services restart mongodb-community@4.2

1
esto no funcionó para mí, mongo todavía está buscando en / data / db
Xen_mar

@Xen_mar, ¿intentabas ejecutar mongod después de editar el archivo? Aparentemente mongod ya está administrado por brew services start
JEC

3

Esto es lo que funcionó para mí mientras estaba en un curso de Udemy: 1. Instala HomeBrew escribiendo esto en tu terminal

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  1. Mueva su antigua carpeta / data / db (si desea hacer una copia de seguridad de su base de datos actual) a una carpeta que no sea raíz y continúe con el siguiente paso

  2. Ejecutar en la Terminal a) brew uninstall mongodb b) Si es necesario, ejecutar brew uninstall --force mongodb c) brew tap mongodb/brew d) brew install mongodb-community e)brew services start mongodb/brew/mongodb-community

  3. Todo lo que necesita ahora es ejecutar mongo en la Terminal y verá el símbolo de shell mongo>.

Por favor, avíseme si esto funciona;) Me tomó casi 2 horas resolverlo, según este artículo: /apple/362883/mongodb-doesnt-work-after-update-to -macos-catalina-10-15

Saludos, Radu


3

Si está en Mac y enfrenta el problema, el siguiente comando es útil, la whoamivariable obtendrá el usuario actual

mongod --dbpath=/Users/$(whoami)/data/db

3

Entonces, con macOS Catalina, Apple creó un nuevo volumen por razones de seguridad. Si está en macOS Catalina, deberá crear la /data/dbcarpeta en formato System/Volumes/Data.

Siga estos comandos

  1. sudo mkdir -p /System/Volumes/Data/data/db
  2. sudo chown -R id -un /System/Volumes/Data/data/db

Inicie MongoDB

  1. brew services run mongodb-community

  2. Disfruta 😉


3

Rutas predeterminadas para la fórmula mongodb-community

Además de instalar el servidor MongoDB y los archivos binarios de la herramienta, la fórmula mongodb-community crea:

  • un archivo de configuración: /usr/local/etc/mongod.conf
  • una ruta de directorio de registro: / usr / local / var / log / mongodb
  • una ruta de directorio de datos: / usr / local / var / mongodb

entonces funcionó para mí:

mkdir -p usr/local/var/mongodb/data/db

2

¡Ya no puede crear una carpeta en el directorio raíz en Mac Catalina!

https://www.apple.com/macos/catalina/features/

Volumen del sistema dedicado

macOS Catalina se ejecuta en un volumen de sistema dedicado de solo lectura, lo que significa que está completamente separado de todos los demás datos y ayuda a mejorar la confiabilidad de macOS.

# macOS Catalina, mkdir path
$ sudo mkdir -p /System/Volumes/Data/data/db

# give permissions
$ sudo chown -R `id -un` /System/Volumes/Data/data/db

# macOS 10.14.x -
$ sudo mkdir -p /data/db

# macOS 10.15.x +
$ sudo mkdir -p /System/Volumes/Data/data/db

refs

https://discussions.apple.com/thread/250720711

https://zellwk.com/blog/install-mongodb/

https://www.youtube.com/watch?v=DX15WbKidXY



1

Con macOS Catalina, ya no puede almacenar archivos o datos en el volumen del sistema de solo lectura, ni puede escribir en el directorio "raíz" (/) desde la línea de comandos, como con Terminal.


1

No puede crear un /data/directorio. Eso está reservado para el sistema de archivos APFS. Consulte el blog de Bombich sobre este tema.


Entonces, ¿podría resolverse este problema de archivos de solo lectura? Tengo el mismo problema
Zainab Hammami

2
No, debe usar otro nombre para su directorio. Una posible solución podría ser crear el directorio de datos dentro de otro directorio que esté permitido como directorio raíz.
jvarela

1

Hice esto:

mkdir -p usr/local/var/mongodb/data/db

desde la nueva ruta que es "usr / local / var / mongodb".


0

La versión de Mac Catalina hizo que la carpeta raíz ya no se pueda escribir.

Brew tiene una versión actualizada de mongodb para usar una nueva ruta (que crea él mismo), /usr/local/var/mongodby siguiendo estas instrucciones solucionará el problema:

Guía para instalar mongodb-community-edition actualizado

brew install mongodb-community@VERSION donde la primera VERSIÓN con la corrección es 4.2


0

Creo una esencia con pasos simples para instalar y ejecutar mongodb en catalina

# install homebrew (https://brew.sh/) and run the following commands
sudo chown -R $(whoami) $(brew --prefix)/*
brew tap mongodb/brew
brew install mongodb-community@4.2

## --- aliases to set in your zshrc file

# open your zshrc file
open ~/.zshrc
# copy and paste shorcuts in the end of the file
alias mongod='brew services run mongodb-community'
alias mongod-start='brew services start mongodb-community' #will start MongoDB automatically when you login into your Macbook
alias mongod-status='brew services list'
alias mongod-stop='brew services stop mongodb-community'

# restart your terminal
# type mongod in your terminal for run service & mongod-stop for finish it
# test your mongodb connection with
mongo
show dbs

https://gist.github.com/sturmenta/cf19baa91b1d79d8ae2b305fb7e1f799


0

Para agregar a lo que David Buck escribió aquí , primero debe crear el directorio. Puedes hacer eso con:

sudo mkdir / Sistema / Volúmenes / Datos / datos / db

Si recibe este error:

"Error al analizar la línea de comando: opción no reconocida '--dbpath / System / Volumes / Data / data / db' intente 'mongod --help' para obtener más información"

después de crear el alias, es solo porque David Buck (mientras hacía un comentario realmente útil) se perdió un espacio en su respuesta.

Para solucionar esto, escriba

unalias mongod

y luego escribe

alias mongod = "sudo mongod --dbpath / System / Volumes / Data / data / db"


No fui yo ... el mérito debería ser para Eugène Beliaev. Acabo de editar su respuesta para formatear ...
David Buck

0

No sé por qué Apple hizo eso ... ¿Así que ahora, no podemos tener ningún directorio de nivel raíz que no sea el de ellos? Esto simplemente no tiene ningún sentido y las personas que crean con privilegios de root esas carpetas saben lo que están haciendo

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.