最稳方式是用包管理器安装mongodb-org-8.0:ubuntu/debian用apt,rhel/centos用dnf;需严格导入gpg密钥、匹配系统代号、设置目录权限、单独安装mongosh,并验证监听与连接。

直接装 mongodb-org 包管理器版本最稳,别手抖去下 .tgz 手动解压——8.0 起默认不带 mongod 服务单元、mongosh 单独安装、配置路径和老版本不兼容,手动搞极易启动失败或连不上。
Ubuntu/Debian 上用 apt 安装 mongodb-org-8.0
这是目前最省心的方式,自动处理依赖、生成 /etc/mongod.conf、注册 systemd 服务。关键步骤不能跳:
- 导入 GPG 公钥必须用
gpg --dearmor,否则 apt update 会报NO_PUBKEY错误:curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | sudo gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg --dearmor - 源地址要严格匹配系统代号(如 Ubuntu 24.04 是
noble),写错会导致apt update找不到包:echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu noble/mongodb-org/8.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list - 装完后先别急着
sudo systemctl start mongod,检查/var/lib/mongo目录权限是否属于mongodb用户:sudo chown -R mongodb:mongodb /var/lib/mongo(否则启动日志里全是Permission denied)
CentOS/RHEL 8+ 上用 yum/dnf 安装 mongodb-org-8.0
RHEL 系列必须用 dnf(不是 yum),且 baseurl 中的路径含 rhel8,不是 centos8 或 rocky8 ——哪怕你用的是 Rocky Linux,官方 repo 也只认 rhel8:
- 创建 repo 文件:
sudo tee /etc/yum.repos.d/mongodb-org-8.0.repo写入:[mongodb-org-8.0]name=MongoDB Repositorybaseurl=https://repo.mongodb.org/yum/redhat/8/mongodb-org/8.0/x86_64/gpgcheck=1enabled=1gpgkey=https://www.mongodb.org/static/pgp/server-8.0.asc - 装完后
sudo systemctl enable mongod之前,先确认 SELinux 状态:
若为enforcing,需临时设为 permissive:sudo setenforce 0(否则mongod启动卡在bind() failed errno:13 Permission denied) -
mongosh不随mongodb-org一起安装,得单独执行:sudo dnf install -y mongodb-mongosh
手动解压 .tgz 的坑与最低可行配置
除非你明确需要自定义二进制路径或规避包管理器(比如容器内运行),否则不推荐。但真要上,注意这三点:
- 解压后必须自己建目录:
mkdir -p /data/db /data/log,再chown $USER:$USER /data/db /data/log(不能用root启动,否则mongod拒绝运行) - 配置文件里
storage.dbPath和systemLog.path必须是绝对路径,且末尾不能带斜杠:
✅dbPath: /data/db
❌dbPath: /data/db/(会报Invalid dbPath) - 8.0 默认禁用
mmapv1引擎,配置中删掉storageEngine=mmapv1,改用wiredTiger(默认即启用,无需显式写)
验证安装与首次连接
装完别只看 systemctl status mongod 显示 active 就以为成了——常见假成功:
- 用
mongosh连不上?先确认mongosh版本 ≥ 2.2.0:mongosh --version,低于则重装;再检查mongod是否监听127.0.0.1:27017:ss -tlnp | grep :27017 - 连上后执行
db.runCommand({ping: 1})返回{ "ok" : 1 }才算通;如果卡住或报connect ECONNREFUSED,大概率是mongod实际没跑起来,查journalctl -u mongod -n 50 - 默认无认证,但首次创建用户前,必须先连到
admin库执行db.createUser();别在普通库下试,会提示not authorized on xxx to execute command
真正麻烦的不是安装命令本身,而是 8.0 把 mongod、mongosh、mongo(已废弃)彻底拆开,且 systemd 单元文件不再包含 User=mongodb 默认项——这意味着权限、路径、服务定义全得对得上,差一个字符就起不来。











