基本启动命令 (最常用)
这是启动 MongoDB 最简单、最直接的方式,适用于开发和测试环境。

mongod
执行后会发生什么?
- MongoDB 会在后台运行。
- 它会使用默认的配置:
- 数据目录:
/data/db(在 Linux/macOS 上) 或C:\data\db(在 Windows 上)。 - 日志文件:
/data/db/mongod.log(或 Windows 下的对应路径)。 - 端口:
27017 - 绑定地址:
0.0.1(仅本地可访问)
- 数据目录:
⚠️ 重要前提:
在运行 mongod 之前,必须确保数据目录存在并且 MongoDB 进程有权限读写该目录。
-
在 Linux/macOS 上:
# 创建数据目录 sudo mkdir -p /data/db # 设置所有者 (假设你的用户是 myuser) sudo chown -R myuser /data/db
-
在 Windows 上:
(图片来源网络,侵删)- 以管理员身份打开命令提示符或 PowerShell。
- 创建
C:\data\db目录:mkdir C:\data\db
指定配置文件启动 (推荐用于生产环境)
在生产环境中,我们通常不使用命令行参数,而是将所有配置写在一个配置文件中,这样更清晰、更易于管理。
-
创建配置文件
mongod.conf你可以在任何位置创建这个文件,/etc/mongod.conf(Linux) 或C:\Program Files\MongoDB\Server\X.X\etc\mongod.conf(Windows)。一个典型的
mongod.conf文件内容如下:# mongod.conf # 系统日志配置 systemLog: destination: file path: /var/log/mongodb/mongod.log # 日志文件路径 logAppend: true # 存储引擎配置 storage: dbPath: /var/lib/mongo # 数据文件存储路径 journal: enabled: true # 进程配置 processManagement: fork: true # 在后台运行 (Linux/macOS) pidFilePath: /var/run/mongodb/mongod.pid # 进程ID文件路径 (Linux/macOS) # 网络配置 net: port: 27017 # 监听端口 bindIp: 127.0.0.1 # 绑定IP地址,设置为 0.0.0.0 则允许所有IP访问 -
使用配置文件启动 在终端中,使用
--config(或简写-f) 参数指定配置文件路径。
(图片来源网络,侵删)mongod --config /etc/mongod.conf
常用启动参数详解
除了配置文件,你也可以直接在命令行中指定参数,这在临时调整或快速启动时很有用。
| 参数 | 说明 | 示例 |
|---|---|---|
--dbpath |
指定数据存储目录。 | mongod --dbpath /path/to/my/data |
--logpath |
指定日志文件路径。 | mongod --logpath /path/to/mongod.log |
--port |
指定服务监听的端口号。 | mongod --port 27018 |
--bind_ip |
指定服务绑定的 IP 地址,多个用逗号隔开。 | mongod --bind_ip 127.0.0.1,192.168.1.100 |
--fork |
在后台运行进程 (Linux/macOS)。 | mongod --fork --logpath /var/log/mongod.log |
--auth |
启用身份验证。生产环境必须开启! | mongod --auth |
--nojournal |
禁用日志(journaling)。不推荐,这会牺牲数据安全性。 | mongod --nojournal |
--quiet |
减少日志输出,只记录关键信息。 | mongod --quiet |
--setParameter |
动态设置服务器参数。 | mongod --setParameter enableTestCommands=1 |
Windows 服务启动 (推荐用于生产环境)
在 Windows 上,最佳实践是将 MongoDB 作为 Windows 服务运行,这样它可以在后台自动启动,不依赖于用户登录。
-
以管理员身份打开 PowerShell 或 CMD。
-
使用
sc命令创建服务: 这个命令会读取默认的配置文件路径C:\Program Files\MongoDB\Server\X.X\etc\mongod.conf。# 假设你安装的是 MongoDB 6.0 sc create MongoDB binPath= "C:\Program Files\MongoDB\Server\6.0\bin\mongod.exe --service --config=C:\Program Files\MongoDB\Server\6.0\etc\mongod.conf"
binPath=后面是mongod.exe的完整路径和启动参数。--service参数告诉mongod以服务模式运行。--config指定配置文件。
-
启动服务:
net start MongoDB
-
停止服务:
net stop MongoDB
-
删除服务: 如果需要卸载,可以先停止服务,然后删除。
sc delete MongoDB
常见问题与解决方案
问题:Error: couldn't open /data/db/mongod.lock: Unknown error
原因:通常是因为数据目录 /data/db 不存在,或者当前用户没有权限写入该目录。
解决:
- 确保数据目录存在(如前所述
sudo mkdir -p /data/db)。 - 确保数据目录的所有者是当前用户(
sudo chown -R your_username /data/db)。
问题:Address already in use
原因:端口 27017 已经被其他程序占用,很可能是另一个 mongod 实例正在运行。
解决:
- 查找占用端口的进程:
- Linux/macOS:
lsof -i :27017 - Windows:
netstat -ano | findstr :27017
- Linux/macOS:
- 终止该进程:
- Linux/macOS:
kill -9 <PID> - Windows:
taskkill /F /PID <PID>
- Linux/macOS:
- 或者,换一个端口启动:
mongod --port 27018
问题:Failed to connect to 127.0.0.1:27017
原因:mongod 服务根本没有启动。
解决:
- 检查
mongod是否在运行:ps aux | grep mongod(Linux/macOS) 或tasklist | findstr mongod(Windows)。 - 如果没有运行,请使用正确的命令启动它。
问题:bindIpAll is not a valid option
原因:你使用的 mongod 版本较旧,--bind_ip_all 参数在旧版本中不存在。
解决:
- 升级 MongoDB 版本。
- 或者,使用旧版本的等效参数:
--bind_ip 0.0.0.0。
| 场景 | 推荐命令/方法 |
|---|---|
| 快速测试/开发 | mongod (确保 /data/db 目录存在且有权限) |
| 生产环境 (推荐) | 使用 mongod.conf 配置文件启动:mongod --config /path/to/mongod.conf |
| Windows 生产环境 (最佳实践) | 作为 Windows 服务运行,使用 sc create 命令 |
| 临时修改配置 | 直接使用命令行参数,如 mongod --port 27018 --dbpath /my/data |
希望这份详细的指南能帮助你顺利启动 MongoDB!
