写在前面
最近项目中需要用到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破解之旅(懂的都懂)
这一步就不详细展开了,流程大致是:
-
下载Navicat 16安装包
-
下载激活工具(注意来源安全性)
-
断网安装
-
激活成功
一定要按照步骤来做
第三章:连接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 配置环境变量
-
新建系统变量:
MONGOSH_HOME = D:\Program Files\mongosh\bin -
在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服务查找
-
按
Win + R,输入services.msc -
找到
MongoDB Server服务 -
右键→属性,查看"可执行文件的路径"
-
看到:
--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 # 停止服务
常见问题解决
-
权限不足 :执行
net start MongoDB时报错"发生系统错误 5。拒绝访问 "。
解决:务必以"管理员身份"打开命令提示符。 -
服务无法启动 :报错"MongoDB 服务无法启动 "。
原因 :可能是上次非正常关闭导致数据文件锁死。
解决 :找到数据目录(--dbpath指定的文件夹),删除mongod.lock文件,然后重启服务。 -
配置文件不生效 :只有通过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\
总结:踩坑汇总
遇到的坑
-
Navicat版本太低 → 下载最新版并破解
-
找不到mongo命令 → MongoDB 6.0+需要独立安装mongosh
-
找不到配置文件 → 通过Windows服务查找确切路径
-
认证不生效 → 修改mongod.cfg启用authorization
-
启动方式混淆 → 区分临时启动和服务化运行
-
服务启动权限不足 → 以管理员身份运行CMD
-
连接字符串拼写错误 → localhost别写成loaclhost
完整流程
text
安装MongoDB
→ 安装Navicat(新版)
→ 安装mongosh
→ 创建用户
→ 修改配置文件启用认证
→ 注册为Windows服务
→ 重启服务
→ 测试认证登录
→ MCP配置连接字符串
→ 成功!
最终心得
MongoDB的配置看似简单,但细节真的很多。从版本兼容性到认证配置,从命令行操作到服务化管理,每一步都可能遇到坑。特别是:
-
版本变化:6.0以后mongosh独立安装这个变化,坑了很多人
-
拼写错误:localhost写成loaclhost,这种错误真的太隐蔽了
-
服务化运行:一定要用Windows服务方式运行,否则配置文件不生效
希望这篇踩坑日记能帮到正在配置MongoDB的你!如果对你有帮助,欢迎点赞收藏,有问题可以在评论区交流~