在CentOS上安装MongoDB是一项相对简单但需要一定配置的任务,以下将详细介绍如何完成这一过程,包括环境准备、安装步骤、启动和连接MongoDB服务,以及一些常见问题的解答。
一、环境准备
1、操作系统:本文以CentOS 7为例进行说明。
2、网络环境:确保服务器能够访问互联网,以便下载MongoDB及其依赖项,如果无法访问互联网,则需要提前准备好MongoDB的离线安装包。
3、权限:确保你有足够的权限来执行安装命令和修改系统配置文件,通常建议使用root用户或具有sudo权限的用户进行操作。
二、安装步骤
1. 配置YUM仓库
由于CentOS默认的YUM仓库中不包含MongoDB软件包,因此需要手动添加MongoDB的YUM仓库。
创建一个新的repo文件
sudo vi /etc/yum.repos.d/mongodborg7.0.repo
在文件中添加以下内容(以MongoDB 7.0为例)
[mongodborg7.0] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/7Server/mongodborg/7.0/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server7.0.asc
保存并退出编辑器。
2. 安装MongoDB
配置好YUM仓库后,就可以使用YUM命令来安装MongoDB了。
安装MongoDB服务器
sudo yum install y mongodborg
如果需要安装特定版本的MongoDB,可以在安装时指定版本号,例如
sudo yum install y mongodborg7.0.2 mongodborgserver7.0.2 mongodborgshell7.0.2 mongodborgmongos7.0.2 mongodborgtools7.0.2
3. 启动MongoDB服务
安装完成后,可以使用systemctl命令来管理MongoDB服务。
启动MongoDB服务
sudo systemctl start mongod
查看MongoDB服务状态
sudo systemctl status mongod
设置MongoDB服务开机自启动
sudo systemctl enable mongod
停止MongoDB服务
sudo systemctl stop mongod
重启MongoDB服务
sudo systemctl restart mongod
三、连接MongoDB
1. 本地连接
使用mongo命令连接到本地的MongoDB服务(默认端口是27017)
mongo
在MongoDB shell中,可以查看数据库列表、切换数据库、执行各种数据库操作等,查看所有数据库
show dbs
切换到test数据库
use test
插入一条文档到test数据库中的users集合
db.users.insert({name: "laolitou", age: 999})
查询users集合中的所有文档
db.users.find()
2. 远程连接
默认情况下,MongoDB只绑定到本地主机网络接口,这意味着只有本地客户端可以连接,如果想让远程客户端也能连接,需要修改/etc/mongod.conf
文件中的net.bindIp
字段为0.0.0.0
,并重启MongoDB服务。
编辑/etc/mongod.conf
文件
net: bindIp: 0.0.0.0
重启MongoDB服务使配置生效
sudo systemctl restart mongod
使用mongo命令加上主机名和端口号来连接远程的MongoDB服务
mongo <hostname>:27017
四、其他配置(可选)
1. 修改数据存储路径和日志路径
默认情况下,MongoDB的数据存储路径是/var/lib/mongo
,日志路径是/var/log/mongodb
,如果需要更改这些路径,可以编辑/etc/mongod.conf
文件,并修改相应的字段。
storage: dbPath: /data/mongo # 新的数据存储路径 systemLog: path: /data/mongodb/mongod.log # 新的日志文件路径
2. 启用认证
为了提高MongoDB的安全性,可以启用基于角色的访问控制(RBAC),首先需要在admin数据库中创建一个管理员用户,然后配置MongoDB服务启用认证,具体步骤如下:
使用mongo命令连接到MongoDB(此时无需认证)
mongo
切换到admin数据库并创建管理员用户
use admin db.createUser({ user: "admin", pwd: "password", # 替换为你的密码 roles: [{role: "userAdminAnyDatabase", db: "admin"}, {role: "readWriteAnyDatabase", db: "admin"}] })
退出MongoDB shell。
编辑/etc/mongod.conf
文件,添加或修改以下配置以启用认证
security: authorization: enabled
重启MongoDB服务使配置生效。
3. 开放防火墙端口(如果需要)
如果开启了防火墙(如firewalld),需要确保允许MongoDB服务的端口(默认是27017)通过防火墙,可以使用以下命令开放端口:
sudo firewallcmd zone=public addport=27017/tcp permanent sudo firewallcmd reload
五、验证安装
可以通过多种方式验证MongoDB是否安装成功并正常运行:
检查服务状态:使用systemctl命令查看MongoDB服务的状态,确认服务正在运行且没有错误。
连接测试:使用mongo命令连接到MongoDB,并执行简单的数据库操作,如查看数据库列表、插入和查询文档等。
日志检查:查看MongoDB的日志文件(通常位于/var/log/mongodb/mongod.log
),确认没有错误信息。
六、FAQs
Q1: 如何在CentOS上卸载MongoDB?
A1: 要卸载MongoDB,可以使用YUM命令,确保你已经安装了MongoDB的软件包,使用以下命令卸载MongoDB及其相关组件:
sudo yum remove y mongodborg mongodborgserver mongodborgshell mongodborgmongos mongodborgtools
卸载完成后,可以删除MongoDB的数据存储路径和日志路径(如果不再需要的话),删除默认的数据存储路径和日志路径:
sudo rm rf /var/lib/mongo /var/log/mongodb
卸载MongoDB不会自动删除其数据文件和配置文件,如果你希望保留这些文件以便将来重新安装或迁移数据,请确保在卸载前备份它们。
Q2: 如何在CentOS上升级MongoDB?
A2: 要在CentOS上升级MongoDB,可以按照以下步骤操作:
备份数据:在进行任何升级操作之前,务必备份你的MongoDB数据以防万一,你可以使用MongoDB提供的备份工具(如mongodump
)来备份数据。
停用旧版本:使用systemctl命令停止当前运行的MongoDB服务:
sudo systemctl stop mongod
更新YUM仓库:如果使用的是官方的MongoDB YUM仓库,确保你的仓库是最新的,你可以通过访问MongoDB的官方网站或使用yum clean all
命令来更新你的YUM仓库缓存,对于RPM包管理器,可以使用以下命令清理缓存并更新仓库:
sudo yum clean all sudo yum makecache fast
安装新版本:使用YUM命令安装新版本的MongoDB,你可以指定要安装的版本号,
sudo yum install y mongodborg mongodborgserver mongodborgshell mongodborgmongos mongodborgtools mongodborgdatabasetools mongodborgbiconnector mongodborgcdriver mongodborgcdriverdebuginfo mongodborgcdriverdevel mongodborgcdriverdoc mongodborgcdriverexamples mongodborgcdriverprivate mongodborgcdriverstatic mongodborgcdrivertests mongodborgcsharpdriver mongodborgcsharpdriverexamples mongodborgcsharpdriverprivate mongodborgcsharpdrivertests mongodborgdiagnostic mongodborgenterprise mongodborgfcvbase mongodborgfcvconfigserver mongodborgfcvconfigurable mongodborgfcvconvert mongodborgfcvdcs mongodborgfcvdcsmetadata mongodborgfcvdcsmetadataprivate mongodborgfcvdcsmetadatatests mongodborgfcvdcstests mongodborgfcvshardserver mongodborgfcvshardserverprivate mongodborgfcvshardservertests mongodborgfcvtopologymanager mongodborggeojson mongodborghttpinterface mongodborghttpinterfaceprivate mongodborghttpinterfacetests mongodborghttpinterfacewebsocket mongodborgjavascript mongodborgjavascriptdebuginfo mongodborgjavascriptdoc mongodborgjavascriptexamples mongodborgjavascriptprivate mongodborgjavascripttests mongodborgjni mongodborgjniprivate mongodborgjnitests mongodborgjoseki mongodborgjosekiexamples mongodborgjosekiprivate mongodborgjosekitests mongodborgmsgcat mongodborgmsgcatprivate mongodborgmsgcattests mongodborgmsgfmt mongodborgmsgfmtprivate mongodborgmsgfmttests mongodborgoplog mongodborgoplogprivate mongodborgoplogtests mongodborgperfviewer mongodborgperl driver mongodborgperl driverexamples mongodborgperl driverprivate mongodborgperl drivertests mongodborgpython driver mongodborgpython driver tests private examples doc mongodb org python driver static tests cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctypes cffi ctype