在CentOS系统中添加MongoDB服务,需要经过一系列的配置步骤,包括安装、配置、启动和设置开机自启等,以下是详细的操作指南,帮助用户顺利完成MongoDB服务的部署。

添加MongoDB官方源
需要添加MongoDB的官方软件源,以确保安装的是最新稳定版本,以CentOS 7为例,可以通过以下步骤添加:
- 创建MongoDB的yum仓库文件:
vi /etc/yum.repos.d/mongodb-org.repo
- 在文件中添加以下内容(根据MongoDB版本选择合适的配置):
[mongodb-org-4.4] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.4/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc
- 保存文件后,更新yum缓存:
yum makecache
安装MongoDB
添加完官方源后,即可使用yum命令安装MongoDB:
yum install -y mongodb-org
安装完成后,可以通过以下命令验证MongoDB版本:
mongod --version
配置MongoDB服务
-
修改配置文件
MongoDB的主配置文件位于/etc/mongod.conf,可以根据需求进行修改,例如绑定IP、端口、数据存储路径等,以下是常用配置项:storage: dbPath: /var/lib/mongo journal: enabled: true net: port: 27017 bindIp: 127.0.0.1,192.168.1.100 # 允许远程访问的IP修改完成后保存文件。

-
创建数据目录和日志目录
确保MongoDB有足够的权限访问数据目录和日志目录:mkdir -p /var/lib/mongo mkdir -p /var/log/mongodb chown -R mongod:mongod /var/lib/mongo chown -R mongod:mongod /var/log/mongodb
启动并设置开机自启
- 启动MongoDB服务
使用systemctl命令启动MongoDB:systemctl start mongod
- 检查服务状态
确认MongoDB是否正常运行:systemctl status mongod
- 设置开机自启
如果希望MongoDB在系统重启后自动启动,可以执行:systemctl enable mongod
防火墙配置
如果需要远程访问MongoDB,需要开放27017端口并配置防火墙规则:
- 开放端口:
firewall-cmd --permanent --add-port=27017/tcp firewall-cmd --reload
- 如果使用SELinux,需要设置相应的布尔值:
setsebool -P mongod_can_network_tcp 1
验证MongoDB服务
连接MongoDB并执行简单命令,验证服务是否正常:
mongo
进入MongoDB shell后,可以查看数据库列表:
show dbs
常见问题处理
- 启动失败
检查日志文件/var/log/mongodb/mongod.log,根据错误信息排查问题,可能是权限不足或配置文件错误。 - 无法远程连接
确认防火墙和SELinux设置,并检查mongod.conf中的bindIp是否配置为正确的IP地址。
FAQs
问题1:如何修改MongoDB的默认数据存储路径?
答:修改/etc/mongod.conf文件中的storage.dbPath参数,指向新的目录路径,

storage: dbPath: /data/mongo
修改后创建新目录并赋予mongod用户权限,然后重启MongoDB服务:
mkdir -p /data/mongo chown -R mongod:mongod /data/mongo systemctl restart mongod
问题2:如何为MongoDB设置用户认证?
答:首先在MongoDB shell中创建管理员用户:
use admin
db.createUser({ user: "admin", pwd: "your_password", roles: ["userAdminAnyDatabase"] })
然后修改/etc/mongod.conf,启用认证:
security: authorization: enabled
重启MongoDB服务后,连接时需要提供用户名和密码:
mongo -u admin -p your_password