赞
踩
根据你的 mongodb.conf 配置文件里的内容进行排查,如

(1)Unrecognized option: storage try ‘mongod --help’ for more information

解决办法:在storage:下面的两行最前面输入两个空格。
(2)error:child process failed, exited with error number 1
解决办法:创建 /var/run/mongodb/mongod.pid文件
(3)error:child process failed, exited with error number 48
创建 /var/log/mongodb/mongod.log
(4)error:child process failed, exited with error number 100
创建:/var/lib/mongo
每次开机后启动 mongodb 时报 error:child process failed, exited with error number 1 错误,查看发现 /var/run/目录下的 mongodb/mongod.pid文件 不见了或者被自行删除了。
解决办法是:自行写个开机创建 mongodb/mongod.pid文件的脚本。
1.创建脚本为 mgopid.sh
- vim mgopid.sh
-
- #输入如下信息
- #! /bin/bash
- d=`mkdir -p /var/run/mongodb`
- e=`touch /var/run/mongodb/mongod.pid`
2.加入到 /etc/rc.local 中
- vim /etc/rc.local
-
- #输入下面信息
- #creat a mongod.pid
- /root/mgopid.sh
-
- chmod +x /etc/rc.local #添加执行权限
关于 /etc/rc.local
说明:
1. 此文件是存放开机自启动程序命令的文件
2. /etc/rc.local 是 /etc/rc.d/rc.local 文件的软链接。
3. 针对CentOS 7 : 默认是没有执行权限,需要加上执行权限 chmod +x /etc/rc.local
在Linux系统中 /etc/init.d是个目录,这个目录里面用于放置shell脚本,注意是脚本,这些脚本是启动脚本,用于Linux中服务的启动、停止、重启,比如各种Linux中的服务都会有启动脚本放在这里,像是ssh服务的文件sshd就在这里面。
而 /etc/rc.d/rc.local 是一个文件,这个文件用于用户自定义开机启动程序,也就是说用户可以把需要开机启动的命令、运行可执行脚本的命令写入这个文件,这样就可以在系统启动时自动执行这个命令,比如把一个shell脚本的完整路径写入这个文件,那这个shell脚本就会在开机后自动执行。
1.esystemctl start mongod.servic 启动后,查看状态时报错:

2.缘由是文件读取权限不足,执行如下操做:
(1)查看mongodb用户名
cat /etc/passwd

(2)确保以下目录文件权限为mongodb,如果不是则添加权限:
- chown mongodb:mongodb /tmp/mongodb-27017.sock
-
- mongod.conf 配置文件下所有目录 如
- storage:
- dbPath: xxxx 路劲下的 目录也添加权限即可
-
- 如
- chown -R mongodb:mongodb xxx

(3)重新启动即可。
- esystemctl restart mongod.servic
- esystemctl status mongod.servic
使用配置文件启动 mongodb时还有直接执行 mongod时报如下错误,意思是说找不到共享库文件 libcrypto.so.10:


前提:我安装mongodb前已安装下面依赖:
yum -y install libcurl openssl
1.首先通过命令ldd /usr/local/mongodb/bin/mongod 来查看./mongod还需要哪些依赖:

2.通过yum whatprovides libcrypto.so.10命令查看哪个包下有共享库文件
我这边显示没有匹配的搜索结果。你们如果查到有结果的话则 yum 安装相应的包

3.MongoDB 4.0及以上版本需要依赖openssl10相关资源,必须先在Linux中安装openssl10
需要下载一个MongoDB的rpm包,因为MongoDB 安装时需要依赖openssl10进行安全访问,类似http和https之间,做安全连接
- [root@Euler ~]# wget https://vault.centos.org/centos/8/AppStream/x86_64/os/Packages/compat-openssl10-1.0.2o-3.el8.x86_64.rpm
-
- [root@Euler ~]# rpm -ivh compat-openssl10-1.0.2o-3.el8.x86_64.rpm
4.再次查看依赖已经都有了
[root@Euler ~]# ldd /usr/local/mongodb/bin/mongod

5.再次启动mongodb 则可成功
- [root@Euler ~]# mongod --config /usr/local/mongodb/etc/mongod.conf
- about to fork child process, waiting until server is ready for connections.
- forked process: 7739
- child process started successfully, parent exiting
使用配置文件启动 mongodb时报如下错误:

意思是我们配置的config文件出了问题。
说明:MongoDB采用的是YAML格式,所以我们只需要稍微改改就好。
在storage:下面的两行最前面输入两个空格。
我刚开始这两行都是没有空格的,实际应该在下面两行最前面输入两个空格。
比如字母 d 对齐上面的 字母 o:

重启启动mongod即可成功!
可以从下面看到,我前面还能正常访问,后面突然又不行了,用 Robo 3T 工具连接也不成功:
- C:\Program Files\MongoDB\Server\4.2\bin>mongo.exe
- MongoDB shell version v4.2.2
- connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
- Implicit session: session { "id" : UUID("55af8b5e-a2a6-4ebe-8893-fcc8931e7e82") }
- MongoDB server version: 4.2.2
- > show tables
- Warning: unable to run listCollections, attempting to approximate collection names by parsing connectionStatus
- > show collections
- Warning: unable to run listCollections, attempting to approximate collection names by parsing connectionStatus
- > exit
- bye
-
- C:\Program Files\MongoDB\Server\4.2\bin>mongo.exe
- MongoDB shell version v4.2.2
- connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
- 2023-02-14T15:49:48.608+0800 E QUERY [js] Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed: SocketException: Error connecting to 127.0.0.1:27017 :: caused by :: ͨ��ÿ�����ֵ�ַ(Э��/�����ַ/�˿�)ֻ����ʹ��һ�Ρ� :
- connect@src/mongo/shell/mongo.js:341:17
- @(connect):2:6
- 2023-02-14T15:49:48.611+0800 F - [main] exception: connect failed
- 2023-02-14T15:49:48.612+0800 E - [main] exiting with code 1

- # 查看连接数
- C:\Program Files\MongoDB\Server\4.2\bin>netsh int ipv4 show dynamicportrange tcp
-
- 协议 tcp 动态端口范围
- ---------------------------------
- 启动端口 : 49152
- 端口数 : 16384
-
- # 设置最大连接
- C:\Program Files\MongoDB\Server\4.2\bin>netsh int ipv4 set dynamicport tcp start=2000 num=63535
- 确定。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。