Ubuntu 上 MongoDB 配置的常见问题与排查要点
一 安装与源配置问题
- 出现 Unable to locate package mongodb-org:通常是未添加 MongoDB 官方 APT 源或 GPG 密钥错误。应先导入密钥、添加对应发行版与版本的源(如 Ubuntu 20.04/focal 对应 mongodb-org/5.0),再执行
sudo apt update。示例密钥导入与源添加可参考官方安装指引与社区实践。
- 使用 旧版或不被支持的 Ubuntu(如 15.10)时,官方仓库可能无包,安装会失败;需更换为受支持的 LTS 版本或改用对应发行版的仓库。
- 安装后执行
sudo systemctl start mongod 报 Unit mongod.service not found:多因安装不完整或旧包残留。建议彻底清理(sudo apt purge mongodb-org* 并删除旧日志与数据目录),再按官方步骤重装并启动服务。
二 配置文件与路径问题
- 找不到配置文件:Ubuntu 上默认路径为 /etc/mongod.conf;若通过二进制包或自定义安装,可能在 /usr/local/etc/mongod.conf 或自定义目录。可用
sudo find / -name "mongod.conf" 2>/dev/null 定位,再据此编辑。
- 配置项拼写或层级错误:YAML 对缩进和键名敏感,常见如将 security.authorization 写成错误层级或漏写冒号;修改后使用
sudo systemctl restart mongod 使配置生效,并通过 sudo systemctl status mongod 与日志验证。
- 数据与日志目录不存在或权限不足:默认 dbPath: /var/lib/mongodb、systemLog.path: /var/log/mongodb/mongod.log。若自定义路径,需提前创建目录并赋予 mongod 用户读写权限,否则服务启动失败。
三 网络与远程连接问题
- 服务仅监听 127.0.0.1 导致远程连不上:编辑 /etc/mongod.conf 的 net.bindIp,将默认的 127.0.0.1 改为 0.0.0.0(允许所有 IP)或指定内网/公网 IP,并重启服务。
- 云服务器安全组/防火墙未放行:除改配置外,还需在 云厂商安全组与 UFW/iptables 放行 27017 端口,否则会被拦截。
- 端口被占用:执行
sudo netstat -anp | grep 27017 或 sudo lsof -iTCP:27017 -sTCP:LISTEN 检查占用进程并释放端口,再重启 mongod。
- 连接串或命令行使用不当:启用远程监听后,使用
mongo --host <服务器IP> --port 27017 连接;若启用了认证,需提供凭据:mongo -u <user> -p --authenticationDatabase admin。
四 身份验证与权限问题
- 未启用认证导致安全风险:在 /etc/mongod.conf 中开启 security.authorization: enabled,重启后在 admin 库创建管理员用户(如
db.createUser({user:"admin",pwd:"password",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})),之后所有客户端连接需带账号密码。
- 启用了认证却无法登录:连接时必须指定 –authenticationDatabase admin(或相应用户所在库),否则会报认证失败。
- 修改绑定地址后本地
mongo 连不上:若仅绑定到内网 IP,本地 mongo 将无法直连 127.0.0.1;应使用 mongo --host <内网IP> --port 27017 或恢复本地回环绑定。
五 性能与内存调优要点
- WiredTiger 缓存设置:通过 storage.wiredTiger.engineConfig.cacheSizeGB 限制引擎缓存上限(单位 GB)。一般可设为系统可用内存的约 60%,避免与操作系统和其他服务争用。
- 连接与内核参数:大量连接会显著增加内存占用(每个连接的 TCP 读写缓冲与线程栈等)。可按需调整内核参数(如 net.ipv4.tcp_rmem/wmem),并结合业务并发与请求大小评估连接数上限。
- 监控与诊断:使用 mongostat、mongotop 观察吞吐、延迟与锁情况;必要时结合 PMM 等监控平台进行容量与性能分析。