我今天更新到了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
有帮助吗?
答案 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
这将默认创建一些其他文件:
要运行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)
此脚本可能会很有帮助https://gist.github.com/sturmenta/cf19baa91b1d79d8ae2b305fb7e1f799
??????
答案 4 :(得分:0)
找到了窍门... 从目录中删除〜/ data / db整个文件夹 然后重新创建一个新的,但不要使用mkdir -p / data / db 相反,只需使用触控板即可 use system way to create folder
这对我有用
答案 5 :(得分:0)
这对我有用:
答案 6 :(得分:0)
Kevinadi已经回答了这个问题,但这就是我如何解决这个问题:
安装mongodb-community后
sudo mkdir -p /System/Volumes/Data/data/db
(创建data / db文件夹)sudo chown -R
id -un /System/Volumes/Data/data/db
(授予权限)mongod --dbpath=/System/Volumes/Data/data/db
(更改mongodb的dbpath)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
。