升级到Mac OS 10.15(Catalina)后,MongoDB无法找到数据目录

时间:2019-10-08 09:06:27

标签: mongodb macos

我今天更新到了MacOS 10.15(Catalina)。当我在终端上运行mongod时,找不到/data/db目录:

➜  /Users/william > mongod
2019-10-08T17:02:44.183+0800 I CONTROL  [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'
2019-10-08T17:02:44.209+0800 I CONTROL  [initandlisten] MongoDB starting : pid=43162 port=27017 dbpath=/data/db 64-bit host=Williams-MacBook-Pro-6.local
2019-10-08T17:02:44.209+0800 I CONTROL  [initandlisten] db version v4.0.3
2019-10-08T17:02:44.209+0800 I CONTROL  [initandlisten] git version: 7ea530946fa7880364d88c8d8b6026bbc9ffa48c
2019-10-08T17:02:44.209+0800 I CONTROL  [initandlisten] allocator: system
2019-10-08T17:02:44.209+0800 I CONTROL  [initandlisten] modules: none
2019-10-08T17:02:44.209+0800 I CONTROL  [initandlisten] build environment:
2019-10-08T17:02:44.209+0800 I CONTROL  [initandlisten]     distarch: x86_64
2019-10-08T17:02:44.209+0800 I CONTROL  [initandlisten]     target_arch: x86_64
2019-10-08T17:02:44.209+0800 I CONTROL  [initandlisten] options: {}
2019-10-08T17:02:44.211+0800 I STORAGE  [initandlisten] exception in initAndListen: NonExistentPath: Data directory /data/db not found., terminating
2019-10-08T17:02:44.211+0800 I NETWORK  [initandlisten] shutdown: going to close listening sockets...
2019-10-08T17:02:44.211+0800 I NETWORK  [initandlisten] removing socket file: /tmp/mongodb-27017.sock
2019-10-08T17:02:44.211+0800 I CONTROL  [initandlisten] now exiting
2019-10-08T17:02:44.211+0800 I CONTROL  [initandlisten] shutting down with code:100
➜  /Users/william > 

我尝试使用brew安装MongoDB:

brew install mongodb

➜  /Users/william > brew install mongodb
Updating Homebrew...
Error: mongodb: unknown version :mountain_lion

有帮助吗?

10 个答案:

答案 0 :(得分:65)

这是主要错误:

  

initAndListen中的异常:NonExistentPath:找不到数据目录/ data / db。正在终止

Catalina发生了令人惊讶的更改:它不允许更改根目录(在forum thread中也对此进行了讨论):

% sudo mkdir -p /data/db
mkdir: /data/db: Read-only file system

不幸的是,除了Catalina release notes中的简短提及之外,苹果公司的Catalina features中没有明确说明这一点:

  

macOS Catalina在专用的只读系统卷中运行

由于目录/data/db被编码为MongoDB默认目录,一种解决方法是指定不在根目录上的另一个dbpath。例如:

mongod --dbpath ~/data/db

这会将MongoDB的数据放在您的主目录中。只要确保路径~/data/db实际上存在。

替代方法

另一种方法是利用brew来遵循Install MongoDB Community Edition on macOS上的说明:

brew tap mongodb/brew
brew install mongodb-community

这将默认创建一些其他文件:

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

要运行mongod,您可以:

  • 从命令行手动运行命令(为方便起见,可以使用别名):

    mongod --config /usr/local/etc/mongod.conf
    
  • 使用brew services将MongoDB作为服务运行。请注意,这会将MongoDB作为独立节点(而不是副本集)运行,因此取决于oplog的功能例如除非您修改mongod配置文件,否则changestreams将不起作用:

    brew services start mongodb-community
    

答案 1 :(得分:50)

安装Catalina之后,您的桌面上可能会有一个名为Relocated Items的文件夹。您可以在data/db文件夹中找到Security文件夹。

我要做的就是移动Security/data/db,特别是data/db并将其放在我的主文件夹中。

您可以通过以下命令使用Finder应用程序或终端来执行此操作:

sudo mv /Users/Shared/Relocated\ Items/Security/data ~/

运行之后: mongod --dbpath ~/data/db

由您自己决定早先创建别名

答案 2 :(得分:1)

我在使用 BigSur 时遇到了同样的问题,不幸的是,Relocated Items 文件夹没有包含任何类似于我的 MongoDB 转储的内容。我决定按数据库名称搜索 Finder,因为 dump 包含带有数据库名称的文件夹。而我的转储竟然在这里

Macintosh HD/系统/卷/Macintosh HD/数据/db

据我所知,在操作系统更新期间,转储已被悄悄移动,因为它曾经在 root 中,现在操作系统不授予写入 root 的权限。

答案 3 :(得分:0)

答案 4 :(得分:0)

找到了窍门... 从目录中删除〜/ data / db整个文件夹 然后重新创建一个新的,但不要使用mkdir -p / data / db 相反,只需使用触控板即可 use system way to create folder

这对我有用

答案 5 :(得分:0)

这对我有用:

  1. 在某个位置创建一个文件夹开发/ mongodb / data / db
  2. 打开 mongod.conf 文件,并将 storage.dbPath 值更新为新创建的文件夹路径

答案 6 :(得分:0)

Kevinadi已经回答了这个问题,但这就是我如何解决这个问题:

安装mongodb-community后

  1. sudo mkdir -p /System/Volumes/Data/data/db(创建data / db文件夹)
  2. sudo chown -R id -un /System/Volumes/Data/data/db(授予权限)
  3. mongod --dbpath=/System/Volumes/Data/data/db(更改mongodb的dbpath)
  4. mongod(运行良好)

我发现此article在安装mongodb上非常有用

答案 7 :(得分:0)

Mac版本Catalina使得根文件夹不再可写。

Brew拥有mongodb的更新版本,可以使用新路径(它自己创建)/usr/local/var/mongodb,并按照以下说明将解决此问题:

Guide to installing updated mongodb-community-edition

brew install mongodb-community@VERSION,其中包含修订的第一个版本为4.2

答案 8 :(得分:0)

如果您使用相对目录引用,则无论它们在哪里,您的docker映像都将能够找到您的目录,〜/ Desktop会将Mac Desktop目录映射为/ Desktop到您的映像中。

docker run -it -v ~/Desktop:/Desktop r-base bash

答案 9 :(得分:0)

转到~/Users/Shared文件夹。 在这里,您会找到一个名为“已重定位项目”的文件夹,在其中可以找到“数据”文件夹。此“数据文件夹包含您在/ data / db”中的mongodb数据库。

现在,复制此“数据”文件夹并将其粘贴到您的Users/<name-of-your-user-account-with-the-home-icon">中。

现在打开zsh终端并运行mongod --dbpath ~/data/db,然后在单独的选项卡中打开一个新的shell,然后键入mongo打开mongo shell,您会很高兴。

记住,每次在运行mongod或创建别名时都使用mongod --dbpath ~/data/db