在vps上打开mongodb发现报错,查了下,一般产生原因是mongodb由于不正常关闭产生了一个mongo.lock文件,只要找到并删除这个lock文件,执行repair命令并重新启动mongodb就好了,stackoverflow网友给出的解决命令见如下。
sudo rm mongod.lock路径
sudo mongod --repair
sudo start mongodb || sudo service mongodb start
sudo status mongodb || sudo service mongodb status
mongo
关于mongod.lock路径,取决于你安装mongodb时的创建数据和日志的目录。以下是mongodb.lock可能出现的位置:
/data/db/mongod.lock
/var/lib/mongodb/mongod.lock
/var/mongodb/data/mongod.lock
关于mongod和mongo命令,如果没有创建全局路径,一般先进入/usr/local/mongodb/bin,再执行./mongo或./mongod
执行sudo service mongod (start || restart || status) 可能会报错说mongod.service:Unit not found,有网友表示执行下面命令后再执行一次就可以了:
sudo systemctl enable mongod
但我试了下发现不行,然后stackoverflow那人说他用的是社区版mongodb。。但确实有的人用不了这命令。
至此,删除mongod.lock并执行repair命令后,还是启动./mongo还是报错无法连接数据库,卡在这一步。
最后帮我解决问题的是下面命令:
sudo mkdir -p /data/db && sudo chmod 755 /data/db && sudo chown -R mongod:mongod /data/db
他这里其实是按顺序执行了三条语句,真正有用的是前两个:
sudo mkdir -p /data/db && sudo chmod 755 /data/db
在/目录创建data文件夹。
这时候我重新翻看mongodb的一些资料,菜鸟教程上,不论是在linux还是mac,mongodb的可执行文件确实是安装在/usr/local/mongodb/bin。但是数据库存储目录是在/data/db上的。我自己macbook本地安装是按上面的,但使用的时候没问题。
之前在服务器安装mongo的时候是根据国内一个博客的文章,把数据库存储目录放在了/var/mongodb上。或许那位道友只是自己改了路径。遇到现在这种情况,最好的方法是直接看mongo的官方文档。
官方文档的安装教程不太一样,推荐的是创建一个yum的repo,见这里,所以我决定按官网的重新安装。
具体操作已经有网友归结好了,我也不做额外功:
然后能正常工作了。。。
参考:
Couldn't connect to server 127.0.0.1:27017
Failed to start mongod.service: Unit mongod.service not found