在 CentOS 上运行 MongoDB 报错的原因有很多种,下面我按最常见场景给你做一个排查清单,并给出对应的解决办法。你可以对照自己的报错信息看是哪一种。
Failed to start mongod.service: Unit mongod.service not found原因
解决
# 使用官方 yum 源安装
cat > /etc/yum.repos.d/mongodb-org.repo <<EOF
[mongodb-org]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/7/mongodb-org/6.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-6.0.asc
EOF
yum install -y mongodb-org
Attempted to create lock file on a directory原因
/var/lib/mongo 权限不对解决
chown -R mongod:mongod /var/lib/mongo
chown -R mongod:mongod /var/log/mongodb
ERROR: child process failed, exited with error number 100原因(非常常见)
解决
rm -f /var/lib/mongo/mongod.lock
chown -R mongod:mongod /var/lib/mongo
systemctl restart mongod
ERROR: Cannot start server. Detected data files in /var/lib/mongo created by storage engine 'wiredTiger'原因
解决
报错
Permission deniedsystemctl status mongod 无明确错误解决
# 临时关闭
setenforce 0
# 永久关闭(不推荐生产)
vi /etc/selinux/config
SELINUX=disabled
或正确配置 SELinux:
semanage fcontext -a -t mongod_var_lib_t '/data/mongo(/.*)?'
restorecon -Rv /data/mongo
报错
address already in use解决
netstat -tunlp | grep 27017
kill -9 <pid>
报错
Cannot allocate memory解决
systemctl status mongod -l
journalctl -xe
cat /var/log/mongodb/mongod.log
请把以下信息发我:
yum 还是 tar 安装我可以直接帮你定位到具体哪一行配置或命令错了。