欢迎光临
我们一直在努力

MongoDB 安装与环境搭建:Windows / Linux / Docker 三种方式详解

前言

这是 MongoDB 专栏的第一篇。工欲善其事,必先利其器——在讲文档模型、索引、事务这些硬核内容之前,我们得先把环境搭起来。

本文覆盖三种主流安装方式:Windows、Linux(Ubuntu)、Docker,你按自己的需求选一种即可。文末还会给出安装过程中最常见的几个坑,以及一个新手最容易忽略但生产环境必须做的动作——开启认证。

本文以当前主流的 MongoDB 7.x 社区版(Community Server) 为例。


一、先认识 MongoDB 的几个核心组件

很多人装完 MongoDB,都不清楚自己到底装了些什么。先花一分钟扫清概念,后面就不会迷糊。

组件作用说明
mongod 数据库服务进程 真正干活的服务端,数据存储、查询都靠它
mongosh 命令行客户端 新一代 Shell,用来连接和操作数据库
MongoDB Compass 图形化管理工具 官方 GUI,可视化查看数据、执行查询
MongoDB Database Tools 命令行工具集 包含 mongodump / mongorestore / mongoimport 等,用于导入导出、备份恢复

这里有个新手必踩的坑要先点出来:

老版本的命令行客户端叫 mongo,从 MongoDB 6.0 开始已经被废弃,取而代之的是 mongosh。如果你在网上看到教程里敲 mongo 连不上,不是装错了,是那个教程过时了——改敲 mongosh 即可。


二、Windows 下安装

2.1 下载安装包

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

选择:

  • Version:7.0(或当前最新的稳定版)
  • Platform:Windows
  • Package:msi

在这里插入图片描述

如上图,三个下拉框按红框选好,点击右侧 Download,下载得到一个 .msi 安装包。

2.2 图形化安装

双击 msi 安装包,进入安装向导。第一步是欢迎页,直接点 Next:
在这里插入图片描述

第二步是许可协议,勾选同意后 Next:

在这里插入图片描述

第三步:选择安装类型,选 Complete(完整安装):

在这里插入图片描述

留意这个界面上的一句提示:“The Mongo Shell must be installed separately”——从新版本开始,命令行客户端 mongosh 需要单独安装,这里装的主要是服务端。后面第五节连接时我们会再处理 mongosh。

第四步:服务配置(最关键的一步)。勾选 “Install MongoD as a Service”,让 MongoDB 作为 Windows 服务运行:

在这里插入图片描述

这一步要注意几个信息:

  • Run service as Network Service user:默认即可,用系统内置账户运行服务
  • Data Directory / Log Directory:数据目录和日志目录。我这里装在了 D 盘 D:\\develop_tools\\MongoDB\\Server\\7.0\\ 下,你可以按自己的磁盘规划调整,记下这两个路径,后面排查问题会用到

安装为服务的好处是:开机自动启动,不用每次手动开。

第五步:是否安装 Compass。建议勾选,会一并装上官方图形化工具:

在这里插入图片描述

最后一步:确认信息,点击 Install 开始安装:

在这里插入图片描述

2.3 配置环境变量

安装完成后,mongod 默认不在系统 PATH 里,需要手动加进去,否则在任意目录敲命令会提示"不是内部或外部命令"。

把 MongoDB 的 bin 目录加到系统环境变量 Path 中(路径按你实际的安装位置填,我这里是 D 盘):

D:\\develop_tools\\MongoDB\\Server\\7.0\\bin

在"编辑系统变量"窗口里新增这一行即可:

在这里插入图片描述

注意:前面 Complete 界面已经提示过,新版本的 mongosh 需要单独安装。如果 bin 目录下没有 mongosh.exe,去官网下载 mongosh 独立安装包(https://www.mongodb.com/try/download/shell),解压后把它的 bin 目录也加进 Path。

2.4 验证服务

打开 CMD 或 PowerShell,检查服务状态:

# 启动服务(如果没自动启动)
net start MongoDB

# 停止服务
net stop MongoDB

也可以按 Win + R 输入 services.msc 打开服务管理器,找到 MongoDB Server 服务,确认状态为"正在运行":

在这里插入图片描述

看到状态是"正在运行",就说明服务端已经正常跑起来了。

2.5 单独安装 mongosh(命令行客户端)

这一步很多人会栽跟头。装完上面的 MongoDB Server 后,兴冲冲打开 CMD 敲 mongosh,结果报错:

'mongosh' 不是内部或外部命令,也不是可运行的程序或批处理文件。

原因前面已经埋过伏笔:从新版本开始,mongosh 不再随 MongoDB Server 一起安装,需要单独下载。 报这个错不是你装坏了,而是压根还没装 mongosh,或者装了但没配 PATH。按下面三步解决。

第一步:先确认到底装没装

打开你的 Server 安装目录下的 bin(我这里是 D:\\develop_tools\\MongoDB\\Server\\7.0\\bin),看里面有没有 mongosh.exe:

  • 有 → 跳到第三步配 PATH
  • 没有 → 继续第二步单独下载

第二步:下载并解压 mongosh

访问 mongosh 官方下载页:https://www.mongodb.com/try/download/shell

在这里插入图片描述

选择 Platform 为 Windows x64、Package 为 zip,下载后解压到一个固定目录,例如:

D:\\develop_tools\\mongosh

解压后,mongosh.exe 就在它的 bin 目录下(如 D:\\develop_tools\\mongosh\\bin)。

第三步:把 mongosh 的 bin 目录加进 PATH

和 2.3 配环境变量的操作一样,在系统变量 Path 里新增 mongosh 所在的 bin 目录:

D:\\develop_tools\\mongosh\\bin

如果第一步发现 Server 的 bin 里本来就有 mongosh.exe,那你 2.3 已经把这个 bin 加进 PATH 了,无需重复添加。

第四步:重开终端验证

改完环境变量后,务必关掉当前 CMD / PowerShell 再重新打开(旧窗口不会加载新的 PATH,这是最容易忽略的一点)。然后验证:

mongosh –version

能打印出版本号,就说明 mongosh 装好了,可以进入第五节做连接验证。


三、Linux(Ubuntu)下安装

Linux 下推荐用官方的 apt 源安装,方便后续升级和管理。以 Ubuntu 22.04 为例。

3.1 导入公钥并添加官方源

# 导入 MongoDB 官方 GPG 公钥
curl -fsSL https://pgp.mongodb.com/server-7.0.asc | \\
sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg –dearmor

# 添加 MongoDB 官方 apt 源
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse" | \\
sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list

jammy 是 Ubuntu 22.04 的代号。如果你用的是 20.04(focal)或 24.04(noble),把这里替换成对应代号。

3.2 安装

sudo apt update
sudo apt install -y mongodb-org

安装完成后,几个关键路径需要记住:

路径用途
/var/lib/mongodb 数据存储目录
/var/log/mongodb/mongod.log 日志文件
/etc/mongod.conf 配置文件(改端口、绑定 IP、开认证都在这里)

3.3 启动与开机自启

# 启动
sudo systemctl start mongod

# 查看状态
sudo systemctl status mongod

# 设置开机自启
sudo systemctl enable mongod

# 停止 / 重启
sudo systemctl stop mongod
sudo systemctl restart mongod

3.4 验证

mongosh

能进入 > 提示符就说明服务正常。


四、Docker 方式安装(推荐开发环境)

如果你只是想本地开发、学习,或者需要在同一台机器跑多个版本,强烈推荐用 Docker。理由很简单:干净、隔离、随起随删,不污染宿主机环境,学完直接删容器,一点垃圾都不留。

前提是你已经装好了 Docker。

4.1 快速启动一个容器

docker run -d \\
–name mongodb \\
-p 27017:27017 \\
-v mongodb_data:/data/db \\
-e MONGO_INITDB_ROOT_USERNAME=admin \\
-e MONGO_INITDB_ROOT_PASSWORD=123456 \\
mongo:7.0

参数说明:

参数含义
-d 后台运行
–name mongodb 容器命名,方便后续管理
-p 27017:27017 端口映射(宿主机:容器)
-v mongodb_data:/data/db 数据卷持久化,容器删了数据还在
-e MONGO_INITDB_ROOT_USERNAME/PASSWORD 初始化 root 账号密码

-v 挂载数据卷是新手最容易漏的一步。如果不挂,容器一删数据全没。

4.2 用 docker-compose 管理(更推荐)

命令行参数多了容易记错,用 compose 文件管理更清晰。新建 docker-compose.yml:

version: "3.8"

services:
mongodb:
image: mongo:7.0
container_name: mongodb
restart: unlessstopped
ports:
"27017:27017"
environment:
MONGO_INITDB_ROOT_USERNAME: admin
MONGO_INITDB_ROOT_PASSWORD: "123456"
volumes:
mongodb_data:/data/db

volumes:
mongodb_data:

启动 / 停止:

docker compose up -d # 启动
docker compose down # 停止并移除容器(数据卷保留)
docker compose logs -f # 查看日志

4.3 进入容器验证

# 进入容器内的 mongosh,用刚才设置的账号连接
docker exec -it mongodb mongosh -u admin -p 123456


五、连接与验证

环境装好了,接下来要验证能不能正常读写。我们完整走一遍闭环:连接数据库 → 新建数据库 → 新建文档 → 查出第一条。

这一节给两条路线,你选一条即可,也可以两条都体验一下:

  • 5.1 Compass 图形化:全程点点点,对新手最友好,直观看到"库 → 集合 → 文档"的层级
  • 5.2 mongosh 命令行:敲命令,是后续所有篇章的主力方式,建议一定要熟悉

5.1 用 Compass 图形化走一遍

第一步:连接数据库。

打开 Compass,新建连接,在连接字符串框里填本地实例地址:

mongodb://localhost:27017

在这里插入图片描述

点击 Connect(Save & Connect),连接成功后左侧就能看到已有的数据库列表。

第二步:新建数据库。

点左侧的 “+”(Create Database)按钮,在弹窗里填数据库名和第一个集合名——MongoDB 里建库时必须同时建一个集合。这里数据库填 test,集合填 users:

在这里插入图片描述

这也印证了前面说的:MongoDB 的数据库不能"空建",必须带一个集合才能落地。

第三步:新建文档。

进入 test 库的 users 集合,此时是空的。点 “ADD DATA” → “Insert Document”:

在这里插入图片描述

在弹出的编辑框里,把默认内容改成我们要插入的文档(_id 不用管,留空会自动生成):

{
"name": "Tom",
"age": 18,
"city": "Beijing"
}

在这里插入图片描述

点 Insert 完成插入。集合里就出现了这条文档,可以看到 MongoDB 自动为它生成了一个 _id(ObjectId 类型):

在这里插入图片描述

第四步:查出第一条文档。

在顶部的 Filter 过滤框里输入查询条件,查出刚插入的这条:

{ name: "Tom" }

点 Find,下方就精确返回了匹配的文档:

在这里插入图片描述

到这里,"连接 → 建库 → 建文档 → 查询"的完整闭环就跑通了。Compass 里这套点选操作,本质上和下面 mongosh 的命令是一一对应的。

5.2 用 mongosh 命令行走一遍

Compass 直观,但后续讲语法、聚合、索引时我们主要用 mongosh,因为它更快、更贴近真实开发。为了不和上面 Compass 建的 test 库混在一起,这次我们用命令行新建一个独立的库 bookstore 和集合 books,把同样的流程再走一遍。

第一步:连接数据库。

打开 CMD / PowerShell,敲 mongosh:

# 连接本地默认实例(等价于 mongodb://localhost:27017)
mongosh

# 也可以显式写完整连接串
mongosh "mongodb://localhost:27017"

# 如果开了认证(见第六节),需要带账号密码
mongosh -u admin -p your_password –authenticationDatabase admin

连接成功后,会打印出 MongoDB 版本、mongosh 版本等信息,并进入 test> 这样的提示符:

在这里插入图片描述

图里那句黄色的 “Access control is not enabled for the database” 就是在提醒你当前没开认证——本地学习无所谓,上生产必须处理,见第六节。

第二步:新建(切换)数据库。

// 切换到 bookstore 库,不存在也没关系,写入数据时会自动创建
use bookstore

切换后提示符会变成 bookstore>:

在这里插入图片描述

第三步:新建文档。

// 向 books 集合插入一条文档;集合不存在会自动创建
db.books.insertOne({ title: "MongoDB 实战", author: "Tree", price: 89, stock: 120 })

执行后会返回 acknowledged: true 和自动生成的 _id:

在这里插入图片描述

第四步:查出第一条文档。

// 按条件查询,等价于 Compass 里的 Filter
db.books.find({ title: "MongoDB 实战" })

能查出刚插入的那条文档,就说明整条链路完全通畅:

在这里插入图片描述

再用两个命令确认下库和集合都已经落地:

// 查看当前有哪些数据库(此时能看到 test 和 bookstore 两个库)
show dbs

在这里插入图片描述

// 查看当前库里有哪些集合
show collections

在这里插入图片描述

到这里环境就彻底验证通过了。此时 show dbs 会同时列出 Compass 建的 test 和命令行建的 bookstore——两条路线各建各的,互不影响。

一个反直觉的点:use bookstore 之后如果不往里写数据,show dbs 是看不到 bookstore 库的。MongoDB 里数据库和集合都是"懒创建"的——只有真正写入数据时才会落地。这也是为什么 Compass 建库时强制要你同时建一个集合。


六、开启认证:上生产前的第一道门

前面为了方便,本地可以裸奔(不开认证)。但这里必须严肃地提醒一句:

裸奔的 MongoDB 是重灾区。 早年间大量 MongoDB 实例因为默认无认证、又把端口暴露在公网,被自动化脚本扫描后清空数据、留下勒索信。只要你的实例可能被外部访问,认证就不是可选项。

6.1 创建管理员用户

连接后切换到 admin 库创建用户:

use admin

db.createUser({
user: "admin",
pwd: "your_strong_password",
roles: [ { role: "root", db: "admin" } ]
})

用 Docker 的 MONGO_INITDB_ROOT_USERNAME/PASSWORD 方式启动的,这一步容器已经帮你做了,可跳过。

6.2 开启认证

Linux:编辑 /etc/mongod.conf,加上:

security:
authorization: enabled

然后重启:sudo systemctl restart mongod。

Windows:编辑安装目录下的 mongod.cfg(按前面的安装路径,我这里是 D:\\develop_tools\\MongoDB\\Server\\7.0\\bin\\mongod.cfg),同样加上上面那段 security 配置,再到服务管理器重启 MongoDB Server 服务。

6.3 带认证连接

开启后,再想操作就必须带上账号密码了:

mongosh -u admin -p your_strong_password –authenticationDatabase admin


七、常见安装问题排查

延续本专栏"踩坑"的传统,把最高频的几个问题列成 FAQ。

1. 端口 27017 被占用

启动失败,日志里出现 Address already in use。查一下谁占了:

# Linux / macOS
lsof -i :27017

# Windows
netstat -ano | findstr 27017

要么杀掉占用进程,要么改配置文件里的 net.port 换个端口。

2. 服务启动失败(数据目录问题)

常见于手动指定 –dbpath 启动时:

  • 目录不存在 → MongoDB 不会自动创建,需要手动 mkdir
  • 目录权限不足 → Linux 下确保数据目录属主是运行 mongod 的用户(通常是 mongodb)

3. mongosh 连不上

排查顺序:

  • 服务到底起没起?(systemctl status mongod / 服务管理器)
  • 是不是连的地址/端口不对?
  • 远程连不上?检查配置文件里的 net.bindIp——默认只绑 127.0.0.1,只允许本机访问;要允许外部访问需改成 0.0.0.0(但记得先开认证再对外开放)。
  • 防火墙 / 云服务器安全组有没有放行 27017 端口?

4. 敲 mongo 提示命令找不到

前面说过了:新版已改名 mongosh。


八、小结

三种安装方式怎么选,给你一张速查表:

场景推荐方式理由
本地长期开发、当主力环境 Windows / Linux 原生安装 稳定,作为服务常驻
快速试验、学习、多版本共存 Docker 干净隔离,随起随删
团队协作、统一环境 Docker Compose 一份配置文件,人人环境一致

到这里,环境已经准备就绪。下一篇《MongoDB 基础语法与数据结构》,我们会从 BSON 数据类型讲起,带你把增删改查(CRUD)和常用查询操作符彻底搞明白,为后面的文档模型设计打好基础。

赞(0)
未经允许不得转载:171主机测评 » MongoDB 安装与环境搭建:Windows / Linux / Docker 三种方式详解
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址