记一次完整的MongoDB环境配置实录

写在前面

最近项目中需要用到MongoDB,本以为是个简单的安装配置,没想到一路踩坑不断,从下载MongoDB到最终在MCP(Model Context Protocol)中正常使用,整整折腾了一天。为了不让后来者重蹈覆辙,特将此过程完整记录下来,希望能帮到同样遇到这些问题的朋友。


第一章:一切的开端------安装MongoDB

1.1 下载与安装

去MongoDB官网下载社区版,这一步倒是很顺利,直接下一步下一步安装完成。默认安装路径为:

text

复制代码
C:\Program Files\MongoDB\Server\8.0\

1.2 第一次打击:Navicat版本过低

安装完MongoDB,兴冲冲打开Navicat准备连接,结果报错:

text

复制代码
Unable to load MongoDB plugin

查看Navicat版本,发现是好几年前的旧版本,不支持新版MongoDB。

解决方案:卸载旧Navicat,下载最新版Navicat 16。至于激活嘛...你懂的。


第二章:Navicat破解之旅(懂的都懂)

这一步就不详细展开了,流程大致是:

  1. 下载Navicat 16安装包

  2. 下载激活工具(注意来源安全性)

  3. 断网安装

  4. 激活成功

一定要按照步骤来做


第三章:连接MongoDB发现新问题

3.1 无需认证就能连接?

Navicat成功连接MongoDB后,发现一个问题:居然没有设置用户名和密码,直接就能连上! 这在开发环境还行,但项目要求要有安全认证,于是开始研究如何给MongoDB设置账号密码。

3.2 按照教程执行mongo命令...

打开命令行,输入mongo,结果提示:

text

复制代码
'mongo' 不是内部或外部命令,也不是可运行的程序或批处理文件。

一脸懵逼...


第四章:MongoDB Shell的发现(第一个大坑)

4.1 为什么没有mongo命令?

经过一番搜索,终于明白:MongoDB 6.0及以上版本,Shell是独立安装的,不再集成在安装包中! 这个变化坑了不少人。

4.2 下载MongoDB Shell

下载地址:https://www.mongodb.com/try/download/shell

选择Windows版本下载,安装时我改到了D盘:

text

复制代码
D:\Program Files\mongosh

4.3 配置环境变量

  1. 新建系统变量:MONGOSH_HOME = D:\Program Files\mongosh\bin

  2. 在Path中添加:%MONGOSH_HOME%

配置完成后,打开新命令行输入mongosh,终于成功进入MongoDB Shell!

text

复制代码
Current Mongosh Log ID: xxxxx
Connecting to: mongodb://127.0.0.1:27017
...
test>

第五章:设置MongoDB账号密码

5.1 创建超级管理员

在mongosh中执行以下命令:

javascript

复制代码
use admin
db.createUser({
  user: "root",
  pwd: "你的密码",
  roles: [{
    role: "root",
    db: "admin"
  }]
})

5.2 验证用户创建成功

执行show users查看:

javascript

复制代码
[
  {
    _id: 'admin.root',
    user: 'root',
    db: 'admin',
    roles: [ { role: 'root', db: 'admin' } ]
  }
]

5.3 创建项目数据库用户

为具体项目创建专用用户:

javascript

复制代码
use myproject
db.createUser({
  user: "projectUser",
  pwd: "projectPassword",
  roles: [{
    role: "readWrite",
    db: "myproject"
  }]
})

第六章:配置MongoDB安全认证(第二个大坑)

6.1 发现问题:还是可以免密登录

用户创建好了,但测试发现还是可以不用密码直接连接MongoDB。这是因为MongoDB默认不开启认证,需要修改配置文件。

6.2 找不到mongod.cfg(第三个大坑)

在安装目录找了半天,没找到mongod.cfg。网上说的路径是:

text

复制代码
C:\Program Files\MongoDB\Server\8.0\bin\mongod.cfg

但我的就是没有!

解决方案:通过Windows服务查找

  1. Win + R,输入services.msc

  2. 找到MongoDB Server服务

  3. 右键→属性,查看"可执行文件的路径"

  4. 看到:--config "C:\Program Files\MongoDB\Server\8.0\bin\mongod.cfg"

原来文件是存在的,只是被隐藏了或者我没仔细看。按这个路径终于找到了!

6.3 修改配置文件

管理员身份 打开记事本,编辑mongod.cfg,找到:

yaml

复制代码
#security:

修改为:

yaml

复制代码
security:
  authorization: enabled

注意缩进security:前面不能有空格,authorization:前面要有两个空格。

6.4 重启MongoDB服务

bash

复制代码
net stop MongoDB
net start MongoDB

6.5 测试认证登录

bash

复制代码
mongosh admin -u root -p

输入密码后成功登录,说明认证生效了!


第七章:启动MongoDB服务的两种方法(第四个大坑)

在配置过程中,我发现很多人(包括我自己)对如何正确启动MongoDB服务存在误解。这里详细说明两种方式:

方法一:命令行临时启动(仅用于测试)

bash

复制代码
mongod --dbpath D:\data\db

特点与坑点

  • 优点:简单直接,适合快速测试

  • 致命缺点关闭命令窗口,服务就停止了 。我之前就犯过这个错:配置好账号、修改完mongod.cfg后,发现用Navicat还是连不上。折腾半天才意识到,我一直在用命令行窗口临时运行,根本没把MongoDB注册成Windows服务,修改的配置文件也没生效。

方法二:注册为Windows服务(推荐)

这才是正确且方便的姿势。以管理员身份运行CMD,执行:

安装服务

bash

复制代码
mongod.exe --logpath D:\data\log\mongod.log --logappend --dbpath D:\data\data --directoryperdb --serviceName MongoDB --install

操作服务

bash

复制代码
net start MongoDB  # 启动服务
net stop MongoDB   # 停止服务

常见问题解决

  1. 权限不足 :执行net start MongoDB时报错"发生系统错误 5。拒绝访问 "。
    解决:务必以"管理员身份"打开命令提示符。

  2. 服务无法启动 :报错"MongoDB 服务无法启动 "。
    原因 :可能是上次非正常关闭导致数据文件锁死。
    解决 :找到数据目录(--dbpath指定的文件夹),删除mongod.lock文件,然后重启服务。

  3. 配置文件不生效只有通过Windows服务运行的方式,才会读取mongod.cfg配置文件。如果你是用命令行临时启动的,修改配置文件是没用的。


第八章:MCP集成(第五个大坑)

8.1 配置MCP连接

最后一步,在MCP(Model Context Protocol)中使用MongoDB。运行MCP工具,提示:

text

复制代码
Please enter a MongoDB connection string (Default: mongodb://localhost/):

8.2 连接字符串拼写错误(第六个大坑)

我输入了:

text

复制代码
mongodb://root:密码@loaclhost:27017/admin

结果报错:

text

复制代码
getaddrinfo ENOTFOUND loaclhost
Failed to connect to MongoDB: MongoServerSelectionError: getaddrinfo ENOTFOUND loaclhost

仔细一看,把localhost拼成了**loaclhost**(a和c顺序错了)。这个错误真的太隐蔽了,不仔细看根本发现不了!

8.3 正确的连接字符串

text

复制代码
mongodb://root:密码@localhost:27017/admin?authSource=admin

参数说明

  • localhost:主机名(注意拼写!)

  • 27017:MongoDB默认端口

  • admin:认证数据库

  • ?authSource=admin:指定认证源

8.4 成功连接

修正拼写后,MCP成功连接到MongoDB,终于大功告成!


第九章:常用命令速查表

命令 说明
show users 查看当前数据库的用户
db.changeUserPassword("用户名", "新密码") 修改密码
db.updateUser("用户名", {pwd: "新密码", roles: [...]}) 更新用户信息
db.dropUser("用户名") 删除用户
db.auth("用户名", "密码") 手动认证
net start MongoDB 启动MongoDB服务
net stop MongoDB 停止MongoDB服务
mongosh admin -u 用户名 -p 用账号登录MongoDB

第十章:用户角色说明

角色 说明
root 超级管理员,所有权限
readWrite 读写指定数据库
read 只读指定数据库
dbAdmin 数据库管理(创建索引等)
userAdmin 用户管理
clusterAdmin 集群管理(需在admin库)

第十一章:配置文件位置汇总

  • MongoDB服务配置文件C:\Program Files\MongoDB\Server\<版本号>\bin\mongod.cfg

  • MongoDB Shell安装路径 :独立安装,通常为D:\Program Files\mongosh\bin

  • 数据文件默认路径C:\Program Files\MongoDB\Server\<版本号>\data\

  • 日志文件默认路径C:\Program Files\MongoDB\Server\<版本号>\log\


总结:踩坑汇总

遇到的坑

  1. Navicat版本太低 → 下载最新版并破解

  2. 找不到mongo命令 → MongoDB 6.0+需要独立安装mongosh

  3. 找不到配置文件 → 通过Windows服务查找确切路径

  4. 认证不生效 → 修改mongod.cfg启用authorization

  5. 启动方式混淆 → 区分临时启动和服务化运行

  6. 服务启动权限不足 → 以管理员身份运行CMD

  7. 连接字符串拼写错误 → localhost别写成loaclhost

完整流程

text

复制代码
安装MongoDB 
→ 安装Navicat(新版) 
→ 安装mongosh 
→ 创建用户 
→ 修改配置文件启用认证 
→ 注册为Windows服务 
→ 重启服务 
→ 测试认证登录 
→ MCP配置连接字符串 
→ 成功!

最终心得

MongoDB的配置看似简单,但细节真的很多。从版本兼容性到认证配置,从命令行操作到服务化管理,每一步都可能遇到坑。特别是:

  • 版本变化:6.0以后mongosh独立安装这个变化,坑了很多人

  • 拼写错误:localhost写成loaclhost,这种错误真的太隐蔽了

  • 服务化运行:一定要用Windows服务方式运行,否则配置文件不生效

希望这篇踩坑日记能帮到正在配置MongoDB的你!如果对你有帮助,欢迎点赞收藏,有问题可以在评论区交流~

相关推荐
DBA小马哥1 小时前
国产数据库选型实战:MySQL迁移的兼容性、安全与性能落地
数据库·mysql·安全
Lethehong2 小时前
深入浅出:复杂查询中基于代价的连接条件下推优化实战
数据库
郝学胜-神的一滴2 小时前
深度解析:Python元类手撸ORM框架,解锁底层编程魔法
数据结构·数据库·python·算法·职场和发展
李恒-聆机智能专精数采2 小时前
从零开始了解数据采集技术篇(8)——为什么工业数据采集很难用“一站式平台”解决?从设备生态到系统架构的技术分析
运维·网络·数据库·数据分析·数据采集
小光学长2 小时前
基于ssm的书法学习交流系统25ki07v1(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
java·开发语言·数据库·学习·ssm
sygydxfwd2 小时前
TwinCAT 3配合MySQL数据库实现ms级数据存储
数据库·mysql
IT成长日记2 小时前
国产数据库DM8实战手册:静默安装部署全教程
数据库·dm8·国产数据库·静默安装·部署教程
HAPPY酷2 小时前
Ubuntu 中如何启用 root 账户?—— 从 “su: 认证失败” 到成功切换 root 的完整指南
服务器·数据库·ubuntu
熊哈哈O_o2 小时前
基于代价模型的复杂查询连接条件下推技术实践——以金仓数据库为例
数据库