在服务器上安装 MongoDB 与基础操作
用官方源在 Ubuntu/Debian 装好 mongodb-org,跑通 mongosh 的增删改查,并开启认证避免公网裸奔。
MongoDB 是一款面向文档的数据库,数据以类 JSON 的文档形式存储,适合结构灵活、迭代快速的业务。本文以 Ubuntu/Debian 为主,带你在自己的服务器/VPS 上完成安装、连接和基本操作,并把安全这一步做扎实。
用官方源安装 mongodb-org
发行版自带的 mongodb 包往往版本陈旧,推荐使用 MongoDB 官方 APT 源安装 mongodb-org 元包。以下命令以 MongoDB 8.0、Ubuntu 22.04(jammy)为例,请按你系统的实际版本调整源地址:
# 导入官方 GPG 公钥
curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | \
sudo gpg --dearmor -o /usr/share/keyrings/mongodb-server-8.0.gpg
# 添加软件源(Debian 用户把 ubuntu jammy 换成对应的 debian 代号)
echo "deb [ signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/8.0 multiverse" | \
sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list
sudo apt update
sudo apt install -y mongodb-org
启动 mongod
mongod 是数据库守护进程,交给 systemd 管理最省心:
sudo systemctl enable --now mongod # 开机自启并立即启动
sudo systemctl status mongod # 查看运行状态
默认它只监听 127.0.0.1:27017,也就是只接受本机连接——这是个安全的默认值,先不要急着改。
用 mongosh 连接
mongosh 是新版命令行客户端(旧的 mongo 已弃用)。直接执行即可连上本机实例:
mongosh
库与集合的概念
- 数据库(database):一组集合的容器,用 use 切换,不存在会在写入时自动创建。
- 集合(collection):一组文档,相当于关系型数据库的「表」,但无需预先定义结构。
- 文档(document):一条 JSON/BSON 记录,自带 id 主键。
基本 CRUD
在 mongosh 里对 shop 库的 users 集合做增删改查:
use shop
// 增
db.users.insertOne({ name: "Alice", age: 30, tags: ["vip"] })
// 查
db.users.find({ age: { $gt: 18 } })
db.users.findOne({ name: "Alice" })
// 改($set 只更新指定字段)
db.users.updateOne({ name: "Alice" }, { $set: { age: 31 } })
// 删
db.users.deleteOne({ name: "Alice" })
开启认证,别对公网裸奔
MongoDB 默认不开认证。一旦把 bindIp 放开到公网又没设密码,数据库会在几小时内被扫描、拖库甚至勒索。务必先建管理员再开认证。
先在未开认证时创建管理员账号:
use admin
db.createUser({
user: "admin",
pwd: passwordPrompt(), // 交互式输入,避免密码留在历史记录
roles: [ { role: "root", db: "admin" } ]
})
然后编辑 /etc/mongod.conf,开启认证:
security:
authorization: enabled
重启并带账号连接:
sudo systemctl restart mongod
mongosh -u admin -p --authenticationDatabase admin
安全清单:保持 bindIp: 127.0.0.1,需要远程时用 SSH 隧道或内网;必须公网暴露则用防火墙白名单 + TLS;为每个应用建独立最小权限账号,不要全都用 root。
小结
用官方源装 mongodb-org 拿到较新版本,systemctl 启动 mongod,mongosh 连接后用 use/集合/文档三层模型组织数据,insertOne/find/updateOne/deleteOne 完成基本 CRUD。最关键的一步是开认证:先建 root 账号,再在配置里 authorization: enabled,并让 mongod 只监听本机。把这几步走完,你就有了一个能用且不裸奔的 MongoDB。