M1 Mac通过brew services启动mongodb-community出现Operation timed out错误如何解决
核心原因
该问题是M系列芯片Mac的系统权限限制导致的,和MongoDB、brew配置本身无关:
- brew services是基于macOS的
launchd进程管理服务启动MongoDB,默认状态下launchd没有外接磁盘的访问权限,无法读写你放在/Volumes/Drive13_A/mongodb下的数据库文件,会抛出权限错误直接崩溃,你最初看到服务显示started只是进程刚拉起还没完成初始化检测,后续崩溃后状态就会变为error。 - 你直接在终端执行
mongod命令可以正常启动,是因为你当前使用的终端App已经被授予了外接磁盘的访问权限,进程可以正常读写外接磁盘路径。
你执行的chmod -R 777修改的是文件系统的POSIX权限,该报错属于系统TCC(透明同意控制)权限拦截,因此修改文件权限无法解决问题。
解决方案
可任选以下一种方案解决:
- 方案1(长期稳定,推荐):给
launchd授予完全磁盘访问权限- 打开「系统设置」>「隐私与安全性」>「完全磁盘访问权限」
- 点击列表下方的
+按钮,按下快捷键Command + Shift + G,输入路径/usr/sbin/launchd后选中添加 - 勾选
launchd右侧的开关,重启电脑后重新执行brew services start mongodb-community即可
- 方案2(无需授予全盘权限):修改brew服务的plist配置添加权限
编辑~/Library/LaunchAgents/homebrew.mxcl.mongodb-community.plist文件,在根<dict>节点下添加以下配置:
保存后执行以下命令重载服务并启动:<key>com.apple.security.files.user-selected.read-write</key> <true/> <key>com.apple.security.assets.removable-media.read-write</key> <true/>launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.mongodb-community.plist launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mongodb-community.plist brew services start mongodb-community - 方案3(临时使用):每次需要启动MongoDB时,直接在终端执行命令后台运行即可:
mongod --config /opt/homebrew/etc/mongod.conf --fork
内容的提问来源于stack exchange,提问作者Charlie Fish
相关产品推荐
相关产品推荐

