在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



Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐