简介:本文详细讲解Ubuntu系统下MongoDB的安装配置流程,涵盖基础操作、数据管理和安全优化,适合开发者和DBA参考。
在Ubuntu系统上部署MongoDB前,需确认系统版本与MongoDB的兼容性。MongoDB官方提供针对Ubuntu 20.04 LTS (Focal Fossa)和22.04 LTS (Jammy Jellyfish)的稳定支持,建议使用LTS版本以获得长期维护。首先通过lsb_release -a命令检查系统版本,确保符合要求。
安装依赖时需注意:
sudo apt install wget curl gnupg2 lsb-release,其中gnupg2用于验证软件包签名,lsb-release帮助识别系统标识。/etc/apt/sources.list中添加对应条目。sudo ufw allow 27017/tcp。这是最稳定的安装方式,步骤如下:
# 导入公钥wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -# 添加仓库(以Ubuntu 22.04为例)echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list# 更新并安装sudo apt updatesudo apt install -y mongodb-org
安装完成后,服务会自动注册为systemd单元,可通过sudo systemctl status mongod验证状态。
适用于需要特定版本或离线环境:
# 下载(示例为6.0.5版本)wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu2204-6.0.5.tgz# 解压并移动tar -xzvf mongodb-linux-*.tgzsudo mv mongodb-* /opt/mongodb# 配置环境变量echo 'export PATH=/opt/mongodb/bin:$PATH' >> ~/.bashrcsource ~/.bashrc
需手动创建数据目录和配置文件,灵活性更高但维护成本增加。
适合快速测试和微服务架构:
# 拉取官方镜像docker pull mongo:6.0# 运行容器(带认证)docker run -d --name mongodb \-p 27017:27017 \-e MONGO_INITDB_ROOT_USERNAME=admin \-e MONGO_INITDB_ROOT_PASSWORD=secure123 \mongo:6.0 --auth
通过docker exec -it mongodb mongosh可进入容器内Shell操作。
主配置文件位于/etc/mongod.conf,关键参数包括:
storage.engine: wiredTiger(默认高性能引擎)storage.dbPath: /var/lib/mongodbsystemLog.path: /var/log/mongodb/mongod.lognet.bindIp: 0.0.0.0(生产环境建议限制为内网IP)修改后需重启服务:sudo systemctl restart mongod
wiredTiger.engineConfig.cacheSizeGB: 2(根据可用内存调整)operationProfiling.mode: slowOp(记录慢查询)net.maxIncomingConnections: 1000(高并发场景调整)
// 本地无认证连接mongosh// 带认证连接mongosh "mongodb://admin:secure123@localhost:27017/?authSource=admin"
// 创建数据库(自动创建)use testdb// 插入文档db.users.insertOne({name: "Alice", age: 28, skills: ["JS", "Python"]})// 查询文档db.users.find({age: {$gt: 25}}, {name: 1, _id: 0})// 索引创建db.users.createIndex({name: 1}, {unique: true})// 聚合查询db.users.aggregate([{$match: {skills: "Python"}},{$group: {_id: null, avgAge: {$avg: "$age"}}}])
# 完整备份mongodump --uri="mongodb://admin:secure123@localhost" --out=/backup/# 恢复数据mongorestore --uri="mongodb://admin:secure123@localhost" /backup/testdb/
// 创建管理员用户use admindb.createUser({user: "superadmin",pwd: "ComplexPass123!",roles: ["root"]})// 创建应用用户use testdbdb.createUser({user: "appuser",pwd: "AppPass456!",roles: ["readWrite"]})
生成证书后修改配置:
net:tls:mode: requireTLScertificateKeyFile: /etc/ssl/mongodb.pemCAFile: /etc/ssl/ca.pem
启用操作审计:
auditLog:destination: fileformat: JSONpath: /var/log/mongodb/audit.json
journalctl -u mongod -n 50,常见原因包括端口占用、数据目录权限错误。sudo setenforce 0临时禁用测试)。mongotop和mongostat监控,检查索引缺失情况。config servers、mongos路由和多个shard。db.collection.watch()实现实时数据变更通知。通过系统化的安装配置和深入的操作实践,开发者可在Ubuntu环境下高效利用MongoDB构建现代应用。建议定期参考官方文档更新知识,关注版本升级带来的新特性(如7.0版本的时序集合支持)。