Skip to content

MongoDB macOS 安装指南

在macOS上安装MongoDB有多种方法,包括使用Homebrew包管理器、手动下载安装包和使用Docker容器。本文将详细介绍这些安装方法的步骤和最佳实践。

系统要求

在安装MongoDB之前,需要确保你的macOS系统满足以下要求:

  • macOS 10.15 (Catalina) 或更高版本
  • 至少4GB RAM
  • 至少10GB可用磁盘空间
  • 64位处理器

安装方法

1. 使用Homebrew安装(推荐)

Homebrew是macOS上的包管理器,使用它可以方便地安装和管理MongoDB。

步骤1:更新Homebrew

bash
brew update

步骤2:安装MongoDB

bash
# 安装最新稳定版
brew install mongodb-community

# 安装特定版本
brew install mongodb-community@6.0

步骤3:启动MongoDB服务

bash
# 启动MongoDB服务
brew services start mongodb-community

# 或者手动启动(不推荐用于生产环境)
mongod --config /usr/local/etc/mongod.conf --fork

步骤4:验证安装

bash
# 连接到MongoDB
mongosh

# 查看MongoDB版本
db.version()

步骤5:停止MongoDB服务

bash
# 停止MongoDB服务
brew services stop mongodb-community

# 或者手动停止
mongosh --eval "db.adminCommand({ shutdown: 1 })"

2. 手动安装

如果不想使用Homebrew,也可以手动下载MongoDB安装包进行安装。

步骤1:下载MongoDB安装包

访问MongoDB官方下载页面:https://www.mongodb.com/try/download/community

选择适合你macOS版本的安装包(tgz格式),或使用curl命令下载:

bash
# 下载MongoDB 6.0.5版本(根据需要替换版本号)
curl -O https://fastdl.mongodb.org/osx/mongodb-macos-x86_64-6.0.5.tgz

步骤2:解压安装包

bash
# 解压安装包
tar -zxvf mongodb-macos-x86_64-6.0.5.tgz

# 重命名目录
mv mongodb-macos-x86_64-6.0.5 mongodb

# 将MongoDB移动到/usr/local目录
sudo mv mongodb /usr/local/

步骤3:配置环境变量

编辑你的shell配置文件(~/.bash_profile或~/.zshrc),添加MongoDB到PATH:

bash
# 打开配置文件
nano ~/.zshrc

# 添加以下内容
export PATH="/usr/local/mongodb/bin:$PATH"

# 保存并退出,然后刷新配置
source ~/.zshrc

步骤4:创建数据目录和日志目录

bash
# 创建数据目录
sudo mkdir -p /usr/local/var/mongodb

# 创建日志目录
sudo mkdir -p /usr/local/var/log/mongodb

# 设置目录权限
sudo chown -R $(whoami) /usr/local/var/mongodb
sudo chown -R $(whoami) /usr/local/var/log/mongodb

步骤5:创建配置文件

bash
# 创建配置文件目录
sudo mkdir -p /usr/local/etc

# 创建配置文件
nano /usr/local/etc/mongod.conf

添加以下配置内容:

yaml
systemLog:
  destination: file
  path: /usr/local/var/log/mongodb/mongo.log
  logAppend: true
storage:
  dbPath: /usr/local/var/mongodb
net:
  bindIp: 127.0.0.1
  port: 27017
processManagement:
  fork: true

步骤6:启动MongoDB

bash
# 使用配置文件启动MongoDB
mongod --config /usr/local/etc/mongod.conf

步骤7:验证安装

bash
# 连接到MongoDB
mongosh

# 查看MongoDB版本
db.version()

3. 使用Docker安装

对于开发和测试环境,使用Docker安装MongoDB是一个便捷的选择。

步骤1:安装Docker

如果尚未安装Docker,请从Docker官网下载并安装:https://www.docker.com/products/docker-desktop

步骤2:拉取MongoDB镜像

bash
# 拉取最新稳定版镜像
docker pull mongo:latest

# 拉取特定版本镜像
docker pull mongo:6.0.5

步骤3:运行MongoDB容器

bash
# 运行MongoDB容器
docker run -d \
  --name mongodb \
  -p 27017:27017 \
  -v ~/mongodb-data:/data/db \
  -e MONGO_INITDB_ROOT_USERNAME=admin \
  -e MONGO_INITDB_ROOT_PASSWORD=password \
  mongo:latest

参数说明:

  • -d:在后台运行容器
  • --name mongodb:容器名称
  • -p 27017:27017:映射容器端口到主机
  • -v ~/mongodb-data:/data/db:挂载数据卷
  • -e MONGO_INITDB_ROOT_USERNAME:设置 root 用户名
  • -e MONGO_INITDB_ROOT_PASSWORD:设置 root 密码

步骤4:连接到MongoDB容器

bash
# 连接到MongoDB容器
docker exec -it mongodb mongosh -u admin -p password --authenticationDatabase admin

# 查看MongoDB版本
db.version()

步骤5:停止和删除容器

bash
# 停止容器
docker stop mongodb

# 删除容器
docker rm mongodb

配置MongoDB

1. 配置文件

MongoDB的配置文件包含了各种运行参数,默认位置取决于安装方法:

  • Homebrew安装/usr/local/etc/mongod.conf
  • 手动安装/usr/local/etc/mongod.conf
  • Docker安装:容器内 /etc/mongod.conf

2. 常用配置参数

以下是一些常用的MongoDB配置参数:

yaml
# 系统日志配置
systemLog:
  destination: file
  path: /usr/local/var/log/mongodb/mongo.log
  logAppend: true
  verbosity: 0

# 存储配置
storage:
  dbPath: /usr/local/var/mongodb
  journal:
    enabled: true
  engine: wiredTiger
  wiredTiger:
    engineConfig:
      cacheSizeGB: 2

# 网络配置
net:
  bindIp: 127.0.0.1
  port: 27017
  maxIncomingConnections: 65536

# 进程管理配置
processManagement:
  fork: true
  pidFilePath: /usr/local/var/run/mongodb/mongod.pid

# 安全配置
security:
  authorization: enabled

3. 启用身份验证

默认情况下,MongoDB不启用身份验证。在生产环境中,建议启用身份验证:

步骤1:创建管理员用户

bash
# 连接到MongoDB
mongosh

# 切换到admin数据库
use admin

# 创建管理员用户
db.createUser({
  user: "admin",
  pwd: "password",
  roles: [{ role: "root", db: "admin" }]
})

步骤2:启用身份验证

编辑MongoDB配置文件,添加以下内容:

yaml
security:
  authorization: enabled

步骤3:重启MongoDB服务

bash
# Homebrew安装
brew services restart mongodb-community

# 手动安装
mongosh --eval "db.adminCommand({ shutdown: 1 })"
mongod --config /usr/local/etc/mongod.conf --fork

步骤4:使用身份验证连接

bash
# 使用用户名和密码连接
mongosh -u admin -p password --authenticationDatabase admin

验证安装

安装完成后,需要验证MongoDB是否正常运行:

1. 检查MongoDB服务状态

bash
# Homebrew安装
brew services list

# 手动安装
ps aux | grep mongod

# Docker安装
docker ps

2. 连接测试

bash
# 连接到MongoDB
mongosh

# 执行简单命令
db.test.insertOne({ message: "Hello, MongoDB!" })
db.test.find()

3. 查看日志

bash
# 查看MongoDB日志
# Homebrew安装
tail -f /usr/local/var/log/mongodb/mongo.log

# Docker安装
docker logs -f mongodb

不同MongoDB版本的安装差异

MongoDB 6.0+

  • 引入了原生时间序列集合
  • 支持因果一致性会话
  • 改进了查询计划缓存
  • 增强了分片集群的性能

MongoDB 5.0

  • 引入了原生的文档级时间点恢复
  • 支持实时数据湖
  • 改进了变更流
  • 增强了安全特性

MongoDB 4.4

  • 引入了跳表索引
  • 支持混合分片键
  • 改进了聚合管道
  • 增强了复制集的性能

升级MongoDB

1. Homebrew升级

bash
# 更新Homebrew
brew update

# 升级MongoDB
brew upgrade mongodb-community

# 重启MongoDB服务
brew services restart mongodb-community

2. 手动升级

  • 下载新版本的MongoDB安装包
  • 停止当前MongoDB服务
  • 替换旧版本的二进制文件
  • 启动新版本的MongoDB服务
  • 运行 db.adminCommand({ setFeatureCompatibilityVersion: "6.0" }) 升级功能兼容性版本

3. Docker升级

bash
# 停止并删除旧容器
docker stop mongodb
docker rm mongodb

# 拉取新版本镜像
docker pull mongo:6.0.5

# 运行新版本容器
docker run -d \
  --name mongodb \
  -p 27017:27017 \
  -v ~/mongodb-data:/data/db \
  -e MONGO_INITDB_ROOT_USERNAME=admin \
  -e MONGO_INITDB_ROOT_PASSWORD=password \
  mongo:6.0.5

卸载MongoDB

1. Homebrew卸载

bash
# 停止MongoDB服务
brew services stop mongodb-community

# 卸载MongoDB
brew uninstall mongodb-community

# 删除数据和日志目录
rm -rf /usr/local/var/mongodb
rm -rf /usr/local/var/log/mongodb
rm /usr/local/etc/mongod.conf

2. 手动卸载

bash
# 停止MongoDB服务
mongosh --eval "db.adminCommand({ shutdown: 1 })"

# 删除MongoDB目录
rm -rf /usr/local/mongodb

# 删除数据和日志目录
rm -rf /usr/local/var/mongodb
rm -rf /usr/local/var/log/mongodb

# 删除配置文件
rm /usr/local/etc/mongod.conf

# 从环境变量中移除MongoDB
# 编辑 ~/.zshrc 或 ~/.bash_profile,删除相关行

3. Docker卸载

bash
# 停止和删除容器
docker stop mongodb
docker rm mongodb

# 删除镜像
docker rmi mongo:latest

# 删除数据卷
rm -rf ~/mongodb-data

常见问题(FAQ)

Q1: 安装后无法启动MongoDB服务,提示端口被占用

A1: 可能是端口27017已被其他进程占用。可以使用以下命令查看并终止占用端口的进程:

bash
# 查看占用27017端口的进程
lsof -i :27017

# 终止进程(替换PID为实际进程ID)
kill -9 PID

Q2: 使用Homebrew安装MongoDB时提示"No available formula with the name 'mongodb'"

A2: 从MongoDB 4.4开始,Homebrew将MongoDB迁移到了自己的tap中。使用以下命令安装:

bash
brew install mongodb-community

Q3: 连接MongoDB时提示"Authentication failed"

A3: 可能是用户名或密码错误,或者没有使用正确的认证数据库。确保使用正确的用户名、密码和认证数据库:

bash
mongosh -u admin -p password --authenticationDatabase admin

Q4: 如何查看MongoDB的安装路径?

A4: 可以使用以下命令查看MongoDB的安装路径:

bash
# Homebrew安装
which mongod

# 手动安装
echo $PATH | grep mongodb

# Docker安装
docker inspect mongodb | grep -i path

Q5: 如何在macOS上安装多个MongoDB版本?

A5: 可以使用Homebrew的版本管理功能或Docker来安装多个版本:

bash
# 使用Homebrew安装特定版本
brew install mongodb-community@5.0
brew install mongodb-community@6.0

# 切换版本
brew services stop mongodb-community@6.0
brew services start mongodb-community@5.0

Q6: MongoDB在macOS上的性能如何优化?

A6: 可以从以下几个方面优化MongoDB在macOS上的性能:

  • 调整wiredTigerCacheSizeGB参数,根据系统内存大小设置
  • 使用SSD存储
  • 关闭不必要的服务
  • 优化查询,创建合适的索引
  • 调整系统的ulimit参数

Q7: 如何在macOS上配置MongoDB作为系统服务自动启动?

A7: 使用Homebrew安装的MongoDB会自动配置为系统服务,使用以下命令设置自动启动:

bash
brew services start mongodb-community

Q8: 如何迁移MongoDB数据到新的安装?

A8: 可以使用以下步骤迁移数据:

  1. 停止旧的MongoDB服务
  2. 复制数据目录到新的位置
  3. 启动新的MongoDB服务,指向新的数据目录
  4. 验证数据完整性

最佳实践

1. 开发环境

  • 使用Homebrew或Docker安装,方便管理和升级
  • 不启用身份验证,简化开发流程
  • 使用默认配置,除非有特殊需求
  • 定期备份数据

2. 测试环境

  • 使用与生产环境相同的MongoDB版本
  • 启用身份验证,模拟生产环境
  • 配置监控,收集性能数据
  • 定期进行恢复测试

3. 生产环境

  • 启用身份验证和授权
  • 配置TLS/SSL加密
  • 设置适当的日志级别
  • 定期备份数据
  • 监控系统性能和资源使用
  • 使用副本集或分片集群,确保高可用性

通过遵循上述安装和配置步骤,你可以在macOS系统上成功部署MongoDB,并根据实际需求进行优化和管理。