以下是CentOS下MongoDB的常见问题及解决方法:
一、服务启动与状态管理
- 服务无法启动
检查服务状态:sudo systemctl status mongod,若未启动,使用sudo systemctl start mongod启动。
查看日志:sudo tail -f /var/log/mongodb/mongod.log,排查启动错误。 - 设置开机自启
执行:sudo systemctl enable mongod。
二、网络连接问题
- 无法远程连接
修改配置文件/etc/mongod.conf,将bindIp设为0.0.0.0,并重启服务。
开放防火墙端口:sudo firewall-cmd --add-port=27017/tcp --permanent,然后sudo firewall-cmd --reload。 - 连接超时
检查网络连通性:ping <服务器IP>,确保端口开放:telnet <服务器IP> 27017。
三、权限与认证问题
- 认证失败
确保配置文件中启用认证:security.authorization: enabled,并重启服务。
使用管理员账号连接:mongo -u <用户名> -p <密码> --authenticationDatabase admin。 - 用户权限不足
在MongoDB中为用户分配权限:db.grantRolesToUser("用户名", [{role: "readWrite", db: "数据库名"}])。
四、配置与路径问题
- 配置文件错误
检查/etc/mongod.conf的语法,可通过在线YAML工具验证,修改后重启服务。 - 数据/日志目录权限问题
确保MongoDB用户对数据目录(默认/var/lib/mongo)和日志目录有读写权限:
sudo chown -R mongod:mongod /var/lib/mongo /var/log/mongodb。 - 自定义路径设置
若修改了数据或日志路径,需在配置文件中更新dbPath和logPath,并确保目录存在且权限正确。
五、性能与资源问题
- 磁盘空间不足
使用df -h检查磁盘空间,清理或扩容后重启服务。 - 内存不足
通过top或htop监控内存使用,若不足可调整MongoDB的wiredTiger缓存配置(需在配置文件中修改storage.wiredTiger.engineConfig.cacheSizeGB)。
六、其他常见问题
- SELinux限制
若启用SELinux,可能导致权限问题,可临时设置为permissive模式:sudo setenforce 0,或调整相关策略。 - 版本兼容性问题
确保客户端驱动与MongoDB服务端版本兼容,可通过mongo --version和mongod --version查看版本。
参考来源: