我在 Ubuntu 上安装了 MongoDb,并能够使用 运行它sudo service mongod start
。然后我不得不重新启动它,因为我更改了配置文件。现在我无法再次启动它。当我运行 时sudo service mongod start
,它什么都不说(但我无法使用 连接mongo
)。日志显示,
2018-06-06T18:45:49.279+0000 I STORAGE [initandlisten] exception in initAndListen: IllegalOperation: Attempted to create a lock file on a read-only directory: /var/lib/mongodb, terminating
以下是权限:
ubuntu@ip-172-31-24-92:~$ stat /var/lib/mongodb Access: (0755/drwxr-xr-x) Uid: ( 1000/ ubuntu) Gid: ( 116/ mongodb)
那么,我该如何再次运行它?
附加问题:如何使命令输出实际错误,这样我就不必每次都在日志中查找它?
PS:我是长期的 Windows 用户,刚刚开始学习 Linux。
答案1
首先,欢迎来到 Linux!
其次,我猜测在这种情况下 mongodb 以用户身份运行mongodb
如果是这种情况,那么用户 mongodb 需要写入目录的权限。
鉴于您当前的权限:所有者是ubuntu
,可以rwx
读取、写入和执行,而组是mongodb
,只能r-x
读取、执行。由于 mongodb 用户属于 mongodb 组,但不拥有该文件,因此它无法写入。
Access: (0755/drwxr-xr-x) Uid: ( 1000/ ubuntu) Gid: ( 116/ mongodb)
要解决这个问题,要么让 mongodb 成为所有者
sudo chown mongodb:mongodb -R /var/lib/mongodb
,要么让组也写入
sudo chmod 775 -R /var/lib/mongodb
假设您使用标准方法在标准 Linux 系统上安装了 mongodb 服务器,则可能需要使用 systemctl(SystemD)或 service(upstart)命令重新启动服务。
SystemD:sudo systemctl restart mongodb
或sudo systemctl restart mongod
暴发户:sudo service mongod restart
如果你正在运行 SystemD,那么你可以使用以下命令检查服务状态
sudo systemctl status mongodb
或者sudo systemctl status mongod
您可以使用以下方式查看服务日志
sudo journalctl -u mongodb
或者sudo journalctl -u mongod