Ubuntu18.04重装MongoDB后无法加载旧数据库目录求助
MongoDB重装后旧数据恢复指南(Ubuntu 18.04,MongoDB 5.0.10)
问题根源
日志显示的Permission denied并非mongod.lock文件本身的权限问题,而是以下三个常见原因:
- 旧数据目录的上级目录权限不足:
/home下的用户目录默认仅对所有者开放,mongodb进程无法进入目标路径 - Ubuntu AppArmor限制:默认规则禁止mongod访问/home下的自定义目录
- 旧数据文件所有者为普通用户avy,而非mongodb进程用户,导致部分文件读写失败
解决步骤
1. 修复目录与文件权限链
# 给旧数据目录的上级目录(例如/home/avy)添加mongodb用户的进入权限 sudo chmod o+x /home/avy # 递归将旧数据目录下所有文件的所有者改为mongodb用户及组 sudo chown -R mongodb:mongodb /home/.../mongodatabases
2. 修改AppArmor访问规则
Ubuntu默认的AppArmor会限制mongod的访问路径,需更新配置:
sudo nano /etc/apparmor.d/usr.bin.mongod
在文件中找到/var/lib/mongodb相关的规则块,添加旧数据目录的权限配置:
/home/.../mongodatabases/ r, /home/.../mongodatabases/** rwk,
保存退出后重载AppArmor规则:
sudo systemctl reload apparmor
3. 清理锁文件并重启服务
sudo systemctl stop mongod # 删除旧目录下的无效锁文件 sudo rm /home/.../mongodatabases/mongod.lock # 启动mongod服务 sudo systemctl start mongod
4. 验证恢复结果
# 检查服务运行状态 sudo systemctl status mongod # 进入MongoDB控制台查看数据 mongo # 列出所有数据库验证恢复情况 show dbs
内容的提问来源于stack exchange,提问作者AvyWam
相关产品推荐
相关产品推荐

