MongoDB Atlas 的免费共享集群在学习 MongoDB 驱动、搭建个人项目原型以及做自动化测试时非常实用。它免去了本地安装数据库、管理进程和配置副本集的步骤,创建完成后可以得到一个三节点副本集形式的连接入口。虽然注册流程并不复杂,但免费集群有几处配置容易被忽略,比如数据库用户和网络白名单是两套独立控制,任何一处没配好都会导致连接请求被拒绝。下面按实际申请到连接成功的顺序说明。

一、注册账号并创建 M0 免费集群
进入 MongoDB Atlas 官网后,可以使用邮箱、Google 账号或 GitHub 账号完成注册。首次登录会引导创建一个组织(Organization)和一个项目(Project),组织名称主要用于团队协作和账单归集,不会影响后续的连接地址。项目可以理解为资源的隔离空间,免费集群、数据库用户和访问规则都挂在项目下面。
创建项目后,在 Database 区域点击 Create 或 Build a Cluster,选择共享类型(Shared)里的 M0 Sandbox。M0 是免费规格,提供 512MB 存储空间和共享内存,适合学习和原型验证。云厂商可以在 AWS、Google Cloud 和 Azure 之间选择,区域尽量靠近自己的应用服务器或本地开发机。集群名称可以保留默认的 Cluster0,也可以改成更容易识别的名称,这个名称会出现在连接串的主机名中。
提交创建后,集群状态会显示为 Deploying,通常需要等待一到三分钟。状态变为 Active 后,Atlas 已经为这个集群分配了副本集和对应的 SRV 地址。此时还不能直接写入数据,因为还没有配置数据库用户和访问白名单。
二、配置数据库用户与网络访问
数据库用户配置在 Security 下的 Database Access 页面完成。点击 Add New Database User,认证方式选择 Password,然后输入用户名和密码。权限方面,学习阶段可以勾选 Atlas admin 或者 Read and write to any database。Atlas admin 拥有项目级管理权限,Read and write to any database 则只对数据读写生效,按实际需求选择即可。密码最好使用复杂组合,并保存到密码管理器中,因为 Atlas 创建后不会再次展示明文密码。
网络白名单在 Security 下的 Network Access 页面配置。点击 Add IP Address,可以选择 Add Current IP Address 自动获取当前公网出口 IP。如果开发环境使用动态 IP,或者需要从多台机器访问,可以暂时添加 0.0.0.0/0 来允许所有地址访问。这个规则只适用于测试,绝对不能用于生产环境,否则等于把数据库暴露到公网且只靠账号密码保护。
数据库用户和网络白名单是两套独立的准入控制。用户验证身份,白名单限制来源地址,两者同时满足才能建立连接。免费集群默认没有预置用户,也不允许匿名访问,因此每一步都不能跳过。配置完成后等待几秒到一分钟,让规则下发到副本集节点。
三、获取连接字符串并验证连接
点击集群列表中的 Connect 按钮,会给出多种连接方式。选择 Drivers 可以看到带示例代码的连接地址,选择 Shell 可以直接复制 mongosh 命令。免费集群通常使用 SRV 格式,主机名以 mongodb+srv 开头,解析时会自动获取副本集节点信息。连接串的基本结构如下:
mongodb+srv://username:password@cluster0.xxxxx.mongodb.net/?retryWrites=true&w=majority
其中 username 和 password 需要替换为真实账号密码。如果密码中出现 @、/、:、?、# 等字符,必须进行 URL 编码,否则连接串会被错误切分。比如 @ 需要写成 %40,斜杠 / 写成 %2F。尽量在 Database Access 页面使用复制按钮生成带当前用户信息的连接串,可以减少手动拼接错误。
Node.js 环境可以用官方 mongodb 驱动快速验证连接。安装依赖后,使用下面的代码连接到集群并列出某个数据库的集合:
const { MongoClient } = require('mongodb');
const uri = "mongodb+srv://demo:password@cluster0.xxxxx.mongodb.net/?retryWrites=true&w=majority";
const client = new MongoClient(uri);
async function run() {
try {
await client.connect();
console.log("已连接到 MongoDB Atlas");
const db = client.db("sample_mflix");
const collections = await db.listCollections().toArray();
console.log(collections);
} finally {
await client.close();
}
}
run().catch(console.dir);
如果偏好命令行,也可以安装 mongosh 后执行下面的命令。进入交互式 Shell 后运行 db.runCommand({ ping: 1 }),返回 ok: 1 表示连接和认证都通过。
mongosh "mongodb+srv://demo:password@cluster0.xxxxx.mongodb.net/?retryWrites=true&w=majority"
免费集群在长时间没有请求后可能进入休眠状态,第一次连接需要几秒到十几秒唤醒,这是共享实例的正常行为。如果连接被拒绝,不要急着改代码,先检查用户名、密码、白名单和网络出口。
四、免费集群限制与常见问题处理
连接报 Authentication failed 时,先确认数据库用户是否创建在正确的项目下,用户名是否大小写完全一致。数据库用户的认证库默认是 admin,连接串中不需要特意指定 authSource,通常也没有问题。真正容易被忽略的是密码中的特殊字符没有做 URL 编码,导致驱动读取到错误的密码片段。
如果提示无法到达主机或连接超时,九成原因是当前出口 IP 不在白名单里。可以打开 what is my ip 类型的网页查询当前公网 IP,再回到 Network Access 添加。公司和学校网络往往存在代理,需要把代理服务器的出口地址也添加进去,或者使用手机热点测试是否恢复正常。白名单修改后不是立即全局生效,稍等片刻再试通常能解决。
M0 免费集群虽然具备副本集形式,但存储空间只有 512MB,CPU 和内存也是共享的,不适合保存重要生产数据,也不支持所有企业级监控和备份能力。对于持续运行的业务,建议升级到 M2 或 M10;对于学习、临时测试和小型原型,M0 足够稳定。日常可以使用 MongoDB Compass 粘贴连接串进行图形化管理,建集合、查文档和调试索引都比命令行直观。
MongoDB Atlas免费集群数据库配置修改时间:2026-09-23 08:04:14