遇到MongoDB突然无法启动,第一反应是删除mongod.lock。这个文件在MongoDB的数据库目录下,默认是/data/db。这是最常见的问题了,产生原因是MongoDB没有正常结束(比如被kill -9杀掉或是其他意外情况导致中断)。

还一些其他情况会导致MongoDB无法启动。本文讨论的无法启动,是指:使用/etc/init.d/mongodb start或是sudo service mongdb start,提示mongodb start/running,但查看status仍然是stop/waiting。

service SERVERNAME status有可能误报,先确认MongoDB的实际状态。主要是ps axu|grep mongod查看是否有相关进程,打开links或是直接用浏览器访问127.0.0.1:28017,看不到MongoDB的信息说明没有启动。

然后执行:

$ sudo mongod –repair –config /etc/mongodb.conf

$ sudo mongod –config /etc/mongodb.conf

第一条命令是修复操作,第二条命令是手动指定MongoDB的配置文件,在终端中直接运行,这样输出错误时比较直观,不用去翻日志。如果能顺利运行mongod,说明配置文件和数据库都没有问题,是/usr/bin/mongodb权限不够,请参考本文结尾setcap方法。

如果不能运行,可以看到报错信息,分三种情况:配置文件错误,数据目录设置错误,/usr/bin/mongod文件错误。

配置文件错误比较明显,参数错误会明确提示error command line: unknown option xxx。第二条命令中明确指定使用的配置文件,也容易排错。所以除了之前配MongoDB主从修改配置文件弄坏过一次,很少遇到配置文件的问题。

其次是数据目录,主要是权限问题,可能的报错是:

Thu 22 11 10:03:30 [initandlisten] warning couldn’t write to / rename file /srv/mongodb/journal/prealloc.0

Thu 22 11 10:03:30 [initandlisten] couldn’t open /srv/mongodb/duoshuo.ns errno:1 Operation not permitted

Thu 22 11 10:03:30 [initandlisten] error couldn’t open file /srv/mongodb/duoshuo.ns terminating

数据目录的owner应该是mongodb:mongodb。

$ sudo chown mongodb:mongodb mongodb

最后一种情况是/usr/bin/mongod的问题。它的报错和目录没有读写权限一样,但即使你把MongoDB的数据库目录设置成777,一样会有问题。因为mongod是以O_NOATIME标志来访问文件系统的,mongodb没有这个权限,用setcap设置:

# setcap cap_fowner+ep /usr/bin/mongod

如果这样都不行…备份数据库然后apt-get purge 卸载重装吧。

mongodb启动成功连不上_mongodb启动不了解决方法相关推荐

  1. mongodb启动成功连不上_mongoDB启动服务提示已存在连接的问题

    mongoDB启动服务提示已存在连接的问题 1. 在我用 F:\mongodb\binmongod --dbpath f:\mongodb\data --logpath f:\mongodb\logs ...

  2. eclipse找不到java方法,Linux启动eclipse报错找不到java环境解决方法

    在Linux mint下,前几天还用得很好的的eclipse,今天开机不知为什么这样. Eclipse 3.6 在 linux mint 12 可以在终端顺利启动Eclipse,但是鼠标双击,或者用起 ...

  3. 启动Jupyter Notebook时出现Kernel error错误的解决方法

    启动Jupyter Notebook时出现Kernel error错误的解决方法 方法如下: 1.打开Anaconda Prompt,然后输入jupyter kernelspec list,查看一下 ...

  4. pe下找不到ssd硬盘_快启动PE中没有识别到固态硬盘的解决方法

    快启动PE中没有识别到固态硬盘怎么办?有人遇到电脑系统坏了卡了的情况都会想重装系统,但是进入快启动PE中准备分区时,却没有识别到固态硬盘,让人很是郁闷,所以今天快启动小编为大家分享快启动PE中没有识别 ...

  5. windows中运行qt5构建的程序提示 无法启动此程序,因为计算机中丢失qt5Cored.dll 解决方法

    如果在windows中运行qt5构建的程序提示:无法启动此程序,因为计算机中丢失qt5Cored.dll 解决方法如下 1.用release构建项目 2.把缺少的dll文件,从C:\Qt\Qt5.0. ...

  6. Qt5 提示:无法启动此程序,计算机丢失Qt5Widgetsd.dll的解决方法

    Qt5 提示:无法启动此程序,计算机丢失Qt5Widgetsd.dll的解决方法 参考文章: (1)Qt5 提示:无法启动此程序,计算机丢失Qt5Widgetsd.dll的解决方法 (2)https: ...

  7. 安装centos后 启动mysqld显示mysqld: 未被识别的服务 解决方法

    安装centos后 启动mysqld显示mysqld: 未被识别的服务 解决方法 参考文章: (1)安装centos后 启动mysqld显示mysqld: 未被识别的服务 解决方法 (2)https: ...

  8. MyEclipse 启动报错:‘Building workspace‘ has encountered a problem解决方法

    MyEclipse 启动报错:'Building workspace' has encountered a problem解决方法 参考文章: (1)MyEclipse 启动报错:'Building ...

  9. nginx 启动报错 “/var/run/nginx/nginx.pid“ failed” 解决方法

    nginx 启动报错 "/var/run/nginx/nginx.pid" failed" 解决方法 参考文章: (1)nginx 启动报错 "/var/run ...

最新文章

  1. Python的进程和线程(二)——IO密集型任务
  2. 寒假每日一题(入门组)【week5 完结】
  3. Pixhawk-串级pid介绍
  4. mysql存储引擎简介
  5. [蓝桥杯][算法提高VIP]开灯游戏(dfs)
  6. Bootstrap 3 与 Foundation 5 的区别
  7. [转载总结]Linux环境下C++运行时动态链接库加载要点总结
  8. shell的date命令:使用方法,以及小时、分钟的计算
  9. 利用UIScrollView和UIPageControl实现图片切换
  10. Log4j2 高危漏洞分析
  11. 第七章 (一)暴力求解法
  12. java来电报名字的软件_读短信来电报姓名
  13. 仿制美团购物的网站源码
  14. jsp允许跨域访问_如何解决js跨域问题
  15. 数字黑洞java,java解决数字黑洞问题
  16. 什么是CDN,简单了解CDN
  17. 深空时代来临,探日究竟有何魔力?
  18. 两个脑仁疼的error:error in __connection_block_invoke_2: Connection interrupted
  19. android 设置录像帧率,华为手机设置相机录像帧率的方法
  20. 人类的幸福和欢乐在于奋斗,而最有价值的是为理想而奋斗

热门文章

  1. day1_Python编程⼊门作业
  2. JS正则表达式入门,看这篇就够了
  3. Java堆内内存和堆外内存
  4. Joplin真正稳健的同步方法,joplin误删如何恢复
  5. 基于Joplin和Joplin Server搭建私有云笔记
  6. 一加账号app_一加帐号手机服务全面升级,将由欢太 HeyTap 提供服务
  7. 自动驾驶:使用 3D 时空卷积网络的自监督点云预测
  8. 汇编实验1及博客初尝试
  9. 我打赌!你还不会UART
  10. error C2227: “-QueryInterface”的左侧必须指向类/结构/联合