MongoDB 连接与交互终端
MongoDB 5.0 起官方推荐使用
mongosh
作为交互式 Shell。以下内容在保留原有直连与 Docker 示例的基础上,补充 Atlas/Serverless 连接方案、凭据管理建议与常见排障提示,便于在 2024-2025 的云原生环境中快速上手。
直装方式
启动 mongod(本地开发)
# 启动测试实例(启用鉴权更贴近生产场景)
mongod --dbpath /data/db --port 27017 --auth
bash
生产环境请额外配置
replication.replSetName
、security.authorization: enabled
、TLS 证书等参数。
使用 mongosh 登录
# 本地无鉴权
mongosh --port 27017
# SCRAM 鉴权登录
mongosh --host 127.0.0.1 --port 27017 -u "adminUser" -p "adminPass" --authenticationDatabase "admin"
# 推荐:通过环境变量管理连接串
export MONGODB_URI="mongodb://adminUser:${MONGODB_PASS}@localhost:27017/?authSource=admin&retryWrites=true"
mongosh "$MONGODB_URI"
bash
如仍在使用旧版 mongo
Shell,也可以:
mongo --port 27017
use admin
db.auth("adminUser", "adminPass")
bash
连接日志示例:
Current Mongosh Log ID: 6625f59c1d3b3f0123456789
Connecting to: mongodb://127.0.0.1:27017/?directConnection=true&appName=mongosh+1.10.6
Using MongoDB: 7.0.6
> // 若未开启鉴权,将提示 WARNING: Access control is not enabled...
text
连接 Atlas / Serverless 集群
- 登录 MongoDB Atlas,创建 Dedicated/Serverless/Free Tier 集群。
- 在 Network Access 中配置 IP 白名单或 VPC Peering。
- 在 Database Access 中创建数据库用户(建议使用最小权限 + SCRAM-SHA-256)。
- 使用
mongodb+srv://
连接串:
mongosh "mongodb+srv://cluster0.xxxxxx.mongodb.net/sample_mflix" --username appUser
# CLI/CI 中常见写法
echo "$APP_PASS" | mongosh "mongodb+srv://appUser@cluster0.xxxxxx.mongodb.net/sample_mflix?retryWrites=true&w=majority" --password
bash
Atlas 默认开启 TLS,
mongodb+srv
可自动解析副本集节点地址与证书配置。
Docker 方式
进入容器交互
# 查看正在运行的 MongoDB 容器
$ docker ps | grep mongo
# 进入容器交互式终端
$ docker exec -it <容器名称> bash
bash
在容器内使用 mongosh
:
切换数据库与创建用户
use admin
db.createUser({
user: "Forest",
pwd: passwordPrompt(), // mongosh 支持交互式输入
roles: [{ role: "readWrite", db: "test" }]
})
bash
查看全部数据库:
环境信息(原示例)
::: warning 环境说明
- system:CentOS 8.2 64 位
- CPU & 内存:1 核 2 GiB
- Docker:19.03.14 :::
现代开发工具快速指南
- VS Code:安装 MongoDB for VS Code 插件,可使用 Playground(
.mongodb
文件)直接运行 MQL/聚合。 - Node.js:
npm install mongodb
; 连接 Atlas 示例MongoClient.connect(process.env.MONGODB_URI)
, 如需向量搜索可使用@mongodb-js/atlas-search
。 - Python:
pip install "pymongo[srv]"
或motor
(异步),连接串与 mongosh 相同。
常见报错速查
报错 | 说明 | 解决方案 |
---|---|---|
Authentication failed | 凭证错误或 authSource 不匹配 | 确认用户名、密码、认证库,必要时重设密码 |
connection refused | 端口未监听或防火墙阻止 | 确认 mongod 已启动、端口已开放、容器端口映射正确 |
SCRAM-SHA-256 not supported | 老旧用户仍使用 SCRAM-SHA-1 | 在 admin 库执行 db.adminCommand({authSchemaUpgrade: 1}) 或重建用户 |
TLS handshake failed | 证书或网络问题 | Atlas 访问时确保使用 mongodb+srv ,自建 TLS 检查证书链配置 |
timed out while connecting | 网络不可达或白名单未配置 | 在 Atlas 中添加客户端 IP,并检查代理/防火墙 |
小贴士:生产环境建议开启
retryWrites=true&w=majority
,利用驱动的自动重试与复制集多数写保障可用性。
↑