Ubuntu配置MongoDB常见问题及解决方法
问题描述:启动时提示“Failed to start mongod.service: Unit mongod.service not found”或服务状态显示“inactive (dead)”。
解决方法:
sudo apt list --installed | grep mongodb-org,若未安装,执行sudo apt update && sudo apt install -y mongodb-org。sudo systemctl status mongod,若未运行,尝试启动服务sudo systemctl start mongod,并设置开机自启sudo systemctl enable mongod。sudo tail -f /var/log/mongodb/mongod.log。问题描述:修改/etc/mongod.conf后,服务启动失败或行为异常(如端口未变更、日志不输出)。
解决方法:
mongod --config /etc/mongod.conf --eval命令,若输出“MongoDB shell version…”则表示语法正确。storage.dbPath:确保路径存在(如/var/lib/mongodb)且有读写权限;net.bindIp:若需远程访问,设置为0.0.0.0(本地测试可保留127.0.0.1);systemLog.path:确保日志目录存在(如/var/log/mongodb)。sudo systemctl restart mongod。问题描述:启动时报错“Failed to create a lock file on a read-only directory”或“Permission denied”。
解决方法:
storage.dbPath)和日志目录的所有权:sudo chown -R mongodb:mongodb /var/lib/mongodb /var/log/mongodb(Ubuntu默认用户为mongodb)。sudo mkdir -p /var/lib/mongodb && sudo chown mongodb:mongodb /var/lib/mongodb。问题描述:客户端连接时报错“Connection refused”或“无法连接到服务器”。
解决方法:
net.bindIp配置:确保/etc/mongod.conf中net.bindIp设置为0.0.0.0(允许所有IP)或服务器具体IP。sudo ufw allow 27017(Ubuntu默认防火墙为ufw)。ping <服务器IP>和telnet <服务器IP> 27017,确保网络可达且端口开放。问题描述:连接时提示“Authentication failed”或“Unauthorized”。
解决方法:
security.authorization已启用:/etc/mongod.conf中security.authorization: enabled。mongo
use admin
db.createUser({user: "admin", pwd: "yourPassword", roles: [{role: "root", db: "admin"}]})
exit
mongo --host <服务器IP> --port 27017 -u admin -p yourPassword --authenticationDatabase admin。问题描述:启动时报错“Address already in use”或端口无法监听。
解决方法:
sudo netstat -tulnp | grep 27017或sudo lsof -i :27017。sudo kill -9 <PID>),或修改MongoDB配置文件中的net.port为其他端口(如27018),并重启服务。问题描述:启动时报错“Insufficient disk space”或数据写入失败。
解决方法:
df -h,重点关注/var/lib/mongodb所在分区。sudo journalctl --vacuum-time=1w)、临时文件或备份数据。