在Mac上尝试mkdir / data / db时的只读文件系统


Answers:


156

如果您拥有Mac并已更新到Catalina,则根文件夹不再可写。

我只是在其他地方更改了目录。

暂时使用此命令

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

4
有没有办法使其永久化?每次启动MongoDB服务器时都必须输入它!
AV保罗

2
@AVPaul也许不是最好的解决方案,但是您可以使用别名来引用您的路径。
DjangoBlockchain

1
@JeffGoes我假设您未使用实际名称替换用户。
阿曼

2
@AlexL它也为我工作。但是,每次我要运行dev mongo db时,是否都必须键入mongod --dbpath = / Users / my_USER_name / data / db?因为下次我运行mongod时,它说/ data / db未找到
Shoeb Mirza

3
您可以通过在mongoDB配置文件中设置dbPath使其永久化(如果使用的是Mac,它位于/usr/local/etc/mongod.conf下)。然后添加以下内容:“存储:dbPath:您的db目录的路径”
Samoox

81

来自官方文档https://docs.mongodb.com/manual/tutorial/install-mongodb-on-os-x/

安装自制程序并运行以下命令

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

然后

brew tap mongodb/brew

然后

brew install mongodb-community@4.2

brew services start mongodb-community

要么

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

然后

ps aux | grep -v grep | grep mongod

mongo

验证您可以show dbs在mongo shell中运行


brew服务启动mongodb-community =>错误:mongodb-community未安装公式。您必须启动:Brew服务启动mongodb/brew/mongodb-community@4.2
Andresse Njeungoue

18

随着新的macOS Catalina更新,该文件夹/data/db变为只读状态,您无法对其进行修改。请按照以下过程在另一个文件夹中创建一个数据库:

  1. 更改mongod目录:

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

  2. 给它起一个别名以用作mongod

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

  3. 只需输入mongod您的终端,它应该可以工作。

Extra =>如果您需要授予它当前的用户权限,请使用以下代码行:

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

(仅供参考->$(whoami)只是一个返回当前用户的变量)


1
我在步骤1:sudo mkdir -p /System/Volumes/Data/data/db&&之前完成了此操作sudo chown -R `id -un` /System/Volumes/Data/data/db。不知道这些文件夹是否已经存在,但将@xgqfrms的答案与此文件夹结合在一起。非常感谢,这让我发疯。
twknab

11

永久更改mongoddb文件夹的路径。

在阅读这些文档后,他们大致会这样说。如果mongod从酿造服务开始:

$ brew services start mongodb-community@4.2

它将在路径使用配置文件 /usr/local/etc/mongod.conf


要解决此问题,请编辑配置文件:

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

然后将dbPatheg更改为您的主目录,如下所示:

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 

保存文件并使用brew重新启动mongod:

$ brew services restart mongodb-community@4.2

1
这对我不起作用,mongo仍在/ data / db中
查找-Xen_mar,

@Xen_mar是您在编辑文件后尝试运行mongod吗?显然的mongod已经通过BREW服务启动时运行
JEC

5

因此,为了安全起见,Apple使用macOS Catalina创建了新的Volume。如果您使用的是macOS Catalina,则需要在中创建/data/db文件夹System/Volumes/Data

遵循以下命令

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

启动MongoDB

  1. brew services run mongodb-community

  2. 享受😉


4

您无法再在Mac Catalina的根目录上创建文件夹!

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

专用系统音量

macOS Catalina在专用的只读系统卷中运行,这意味着它与所有其他数据完全独立,并有助于提高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

裁判

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

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

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


3

这是我接受Udemy课程时对我有用的方法:1.在您的终端中键入HomeBrew,以进行安装

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  1. 将旧的/ data / db文件夹(如果要备份当前数据库)移至非根文件夹,然后继续下一步

  2. 在终端a)中运行brew uninstall mongodb b)如果需要,运行brew uninstall --force mongodb c)brew tap mongodb/brew d)brew install mongodb-community e)brew services start mongodb/brew/mongodb-community

  3. 现在,您需要在终端中运行mongo,您将看到mongo shell符号>。

请让我知道是否可行;)根据本文,我花了将近2个小时才弄清楚了:https : //apple.stackexchange.com/questions/362883/mongodb-doesnt-work-after-update-to -macos-catalina-10-15

干杯,拉杜


3

如果您使用的是Mac,并且遇到问题,则以下命令很有用, whoami变量将获取当前用户

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

3

mongodb-community公式的默认路径

除了安装MongoDB服务器和工具二进制文件外,mongodb-community公式还会创建:

  • 配置文件:/usr/local/etc/mongod.conf
  • 日志目录路径:/ usr / local / var / log / mongodb
  • 数据目录路径:/ usr / local / var / mongodb

然后它为我工作:

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

2

您无法创建/data/目录。这是为APFS文件系统保留的。有关此问题,请查看Bombich的博客。


那么,这个只读文件问题可以解决吗?我有同样的问题
Zainab Hammami,

2
不,您需要为目录使用其他名称。一种可能的解决方案是在另一个允许作为根目录的目录中创建数据目录。
jvarela

2

我这样做:

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

因为新路径是“ usr / local / var / mongodb”。


2

我不知道为什么苹果要这样做。这只是没有任何意义,使用root特权创建的人这些文件夹知道他们在做什么


1

使用macOS Catalina,您不能再将文件或数据存储在只读系统卷中,也不能从命令行(例如使用Terminal)写入“根”目录(/)。


1

要添加David Buck在这里写的内容,首先必须实际创建目录。您可以执行以下操作:

sudo mkdir /系统/卷/数据/数据/ db

如果出现此错误:

“错误分析命令行:无法识别的选项'--dbpath / System / Volumes / Data / data / db'尝试'mongod --help'以获取更多信息”

创建别名后,这仅仅是因为David Buck(在发表真正有用的评论时)在答案中漏了一个空格。

要解决此问题,请键入

Unalias mongod

然后输入

别名mongod =“ sudo mongod --dbpath / System / Volumes / Data / data / db”


不是我...应该归功于EugèneBeliaev。我只是编辑了他们的格式化答案...
David Buck


0

我通过简单的步骤来创建要点,以便在Catalina上安装和运行mongodb

# 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/cf19baa9​​1b1d79d8ae2b305fb7e1f799

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.