一、启动mongdb时报错
根据你的 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/mongod.pid 不见了
每次开机后启动 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脚本就会在开机后自动执行。
三、启动报错ExecStart=/usr/bin/mongod --config /etc/mongod.conf (code=exited, status=14)
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
四、mongod: error while loading shared libraries: libcrypto.so.10: cannot open shared object file: No such file or directory
使用配置文件启动 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
五、Unrecognized option: storage.journal try 'mongod --help' for more information
使用配置文件启动 mongodb时报如下错误:
意思是我们配置的config文件出了问题。
说明:MongoDB采用的是YAML格式,所以我们只需要稍微改改就好。
在storage:下面的两行最前面输入两个空格。
我刚开始这两行都是没有空格的,实际应该在下面两行最前面输入两个空格。
比如字母 d 对齐上面的 字母 o:
重启启动mongod即可成功!
六、Windows 中 mongo 无论是用连接工具还是命令行客户端连接,都不能正常连接
可以从下面看到,我前面还能正常访问,后面突然又不行了,用 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
确定。