linux 运行 service mongod start 后服务没有启动成功

问题描述

查看日志(/var/log/mongodb/mongodb.log)有如下信息

1
2
3
Wiredtiger error(13).....file:WiredTiger.wt,connection:/var/lib/mongodb/WiredTiger.turtle:handle-open:open:Permission denied

E NETWORK \[initandlisten\] Failed to unlink socket file /tmp/mongodb-27017.sock errno:1 Operation not permitted

问题出现原因

1、权限问题
然后在查看(/var/lib/mongodb/WiredTiger.turtle)的文件权限,使用命令

1
2
cd /var/lib
ls -l /var/lib/mongodb

查看权限发现 WiredTiger.turtle以及其他若干个文件的权限为 root
所以由于mogodb用户的权限无法访问root权限下的文件造成服务启动失败。
但是为什么这几个文件的权限会变为root呢?
原因是使用过root用户操作过数据库(在root下使用mongod命令等),导致文件的权限变化从而无法再使用(service mongod start)。

2、解决方案

1
2
3
4
5
6
# storage.dbPath
chown -R mongodb:mongodb /var/lib/mongodb
chown mongodb:mongodb mongodb-27017.sock

# systemLog.path
sudo chown -R mongodb:mongodb /var/log/mongodb

将数据文件权限改回mongodb
然后再次启动 service mongo start就可以了,但是如果在以root用户去操作数据库仍会出现上述问题。同时官方极不推荐在root用户下使用数据库

最后想说:Star me on GitHub 欢迎 Star

🙈坚持原创技术分享,您的支持将鼓励我继续创作🙈
显示 Gitment 评论