March 3, 2022

在m1安装mongodb遇到的一些坑

安装流程

  1. install home brew
  2. brew tap mongodb/brew
  3. brew install [email protected]
  4. brew services list

Two ways to start service

根据mongodb文档, step 3和step 4中间还有一步 brew services start [email protected].

我们首先需要知道mongodb有两部分构成, server和client. 开启server的命令为 mongod (other parameters...), 开启client的命令为mongo.

而官网所说的brew services start [email protected] 其实会直接运行default mongod command. 而默认的server db存储位置为/data/db. / 是mac的read-only space, 我们不可以在这里mkdir, 而他本来就没有/data/db这个folder, 所以我们运行官网给出的brew services start [email protected] 后再运行 brew services list 就会显示 3584 error.

error

Fail to stop service

当使用brew services start [email protected] 时我们可以用 brew services stop [email protected] 停止server.

当使用 mongod (other parameters..)时我们有两种方法停止server.

  • Ctrl+C on the terminal which is running mongod
  • open a new terminal
    • type mongo and hit enter
    • use admin
    • db.shutdownServer()

填坑

很简单, 不使用brew services start即可. 我们可以使用sudo mkdir -p /System/Volumes/Data/data/db 在可写区域创建好db储存的文件夹. 然后用sudo mongod --dbpath /System/Volumes/Data/data/db 指定server运行时的数据位置. 这时使用brew services list 则会显示service status started. 之后就可以打开另一个terminal开启client了!

注意: 在做这些事前请确保没有正在运行的mongod(server service).

卸载流程

  1. launchctl list | grep mongo to check the running mongo service
  2. launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist based on which file exists in ~/Library/LaunchAgents
  3. rm -f ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist
  4. launchctl remove homebrew.mxcl.mongodb
  5. pkill -f mongod Kill all the processes related to mongod
  6. brew uninstall mongodb
  7. rm -rf /opt/homebrew/var/mongodb Data Directory
  8. brew cleanup -s mongodb-community
  9. brew cleanup --prune-prefix

Resource

© 2023, Built with Gatsby  
copyright