MongoDB安装教程(Linux平台,图文并茂)
下面以 CentOS 7 为例,讲解 MongoDB 的安装方法。此安装教程同样适用于 Red Hat Enterprise Linux 7(RHEL 7)、Oracle Linux、Rocky Linux 和 AlmaLinux。
与在 Windows 系统上安装 MongoDB 一样,这里选择的 MongoDB 版本为 8.0.4,该数据库版本支持的操作系统版本如下:
RHEL(Red Hat Enterprise Linux) CentOS Oracle Linux Rocky Linux AlmaLinux 9(Starting in MongoDB 8.0.4) AlmaLinux 8
使用yum方式安装MongoDB
在 CentOS 系统上安装 MongoDB 有多种方式,可以直接使用在线 yum 方式安装,无须提前下载安装包,也可以直接到 https://repo.mongodb.org/yum/redhat/ 页面下载 rpm 文件安装,或者在官网 https://www.mongodb.com/try/download/community 页面下载 tgz 文件进行安装。下面演示如何使用 yum 方式进行在线安装。首先创建 repo 文件,文件目录为 /etc/yum.repos.d/mongodb-org-8.0.repo,文件内容如下:
[mongodb-org-8.0] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/7/mongodb-org/8.0/x86_64/ gpgcheck=1 enabled=1 gpgkeyhttps://www.mongodb.org/static/pgp/server-8.0.ascrepo 文件内容如下图所示:

图 1 repo文件内容
如果使用的是 Red Hat Enterprise Linux 8,那么 baseurl 需要换成 https://repo.mongodb.org/yum/redhat/8/ mongodb-org/8.0 x86_64/,以此类推。
创建完成后,执行安装命令,如下所示:
sudo yum install -y mongodb-org
结果如下图所示:
图 2 安装完成界面
如果要指定 MongoDB 6.0 下的某个版本,可以执行如下语句:
sudo yum install -y mongodb-org-6.0.10 mongodb-org-database-6.0.10
mongodb-org-server-6.0.10 mongodb-org-mongos-6.0.10 mongodb-org-tools-6.0.10

图 3 指定安装版本
默认情况下,MongoDB 使用 mongod 的 Linux 系统用户账户,使用如下默认的数据目录和日志目录,安装过程中会自动创建上述目录。
/var/lib/mongo (the data directory) /var/log/mongodb (the log directory)
如果要修改该目录,可以修改 mongod.conf 文件的配置:
- storage.dbPath:配置数据目录,例如 /some/data/directory;
- systemLog.path:配置日志目录,例如 /some/log/directory/mongod.log。
创建完成后,确保当前登录系统的用户账号有权限操作这些文件和目录,如果没有的话,可以使用如下命令配置:
sudo chown -R mongod:mongod /some/data/directory安装完成后,要运行和管理 mongod 进程,需要使用操作系统的内置初始化系统启动或停止该进程。新版本的 Linux 使用 systemd(使用命令 systemctl),而旧版本的 Linux 使用 System V init(使用命令 service),这里的 CentOS 7 使用的是 sysemctl。
如果无法确定应该使用哪个命令,请在 Linux 下运行以下命令来确定:
ps --no-headers -o comm 1如果结果为 systemd,则使用 systemctl 命令;如果结果为 init,则使用 service 命令。作者执行命令的结果如下图所示:

图 4 确定命令
确定命令后,使用命令开启 MongoDB 服务。命令如下:
sudo systemctl start mongod
验证 MongoDB 是否已成功启动。通过以下命令进行检查:
sudo systemctl status mongod
执行结果如下图所示:

图 5 查看MongoDB服务状态
从图中可以看到 MongoDB 当前的状态、启动的时间、配置文件的目录以及启动服务所使用的 sh 命令脚本文件。
如果希望 MongoDB 随操作系统自动重启,可以使用如下命令:
sudo systemctl enable mongod
停止 MongoDB 服务,可以使用如下命令:
sudo systemctl stop mongod
重新启动 MongoDB,可以使用如下命令:
sudo systemctl restart mongod
MongoDB 启动后,会生成相关的日志文件,此文件可用来跟踪错误或重要消息的进程状态,日志文件目录为 /var/log/mongodb/mongod.log。
完成以上操作后,确保 MongoDB 处于开启状态,开始使用 mongosh 连接数据库。与 Windows 不同,Linux 下会直接安装 mongosh 脚本,而不需要再次手动安装。
Mongosh 脚本工具命令为 mongosh,执行结果如下图所示:

图 6 mongosh连接数据库
至此,就可以使用数据库命令操作数据库了。例如显示当前的数据库,如下图所示:

图 7 显示当前数据库
卸载MongoDB
要从系统中完全删除 MongoDB,必须删除 MongoDB 应用程序本身、配置文件以及包含以下内容的任何目录、数据和日志。下面的卸载过程将完全删除MongoDB及其配置和所有数据库。此过程是不可逆的,因此在继续操作之前,请确保备份所有的配置和数据。
1) 停止MongoDB
停止 mongod 服务可以通过以下命令完成:sudo service mongod stop
2) 删除包
删除以前安装的所有 MongoDB 包:sudo yum erase $(rpm -qa | grep mongodb-org)
3) 删除数据目录
删除 MongoDB 数据库和日志文件:sudo rm -r /var/log/mongodbsudo rm -r /var/lib/mongo
其他方式安装MongoDB
MongoDB 同样支持以 tgz 压缩包形式进行安装。首先使用如下命令安装依赖包:sudo yum install libcurl openssl xz-libs
然后到官网下载 tgz 压缩包,下载完成后解压缩,命令如下:
tar -zxvf mongodb-linux-*-8.0.4.tgz
将 MongoDB 的 bin 目录配置到环境变量的 Path 中。支持如下两种方式:
- 复制 MongoDB 的 bin 目录下的文件到 path 变量中已配置的某一路径中,例如 sudo cp/path/to/the/mongodb-directory/bin/* /usr/local/bin/。
- 在 MongoDB 的 bin 目录和 path 变量中已配置的某一路径之间创建系统链接映射,例如 sudo ln -s /path/to/the/mongodb-directory/bin/* /usr/local/bin/。
这种方式安装的 MongoDB 的默认数据目录和日志目录与 yum 方式一样。首先创建目录:
sudo mkdir -p /var/lib/mongo
sudo mkdir -p /var/log/mongodb
因为 MongoDB 默认使用的系统用户为 mongod,所以同样需要为 group 为 mongod、用户名为 mongod 的用户进行目录授权:
sudo chown -R mongod:mongod /var/lib/mongo
sudo chown -R mongod:mongod /var/log/mongodb
常见错误和注意事项
1) 允许访问cgroup
当前的 SELinux 策略不允许 MongoDB 进程访问 /sys/fs/cgroup,这样 MongoDB 就无法确定系统上的可用内存。如果你打算强制运行 SELinux,则需要进行以下调整。首先,确保你的系统已安装软件包 checkpolicy:
sudo yum install checkpolicy
其次,创建自定义策略文件 mongodb_cgroup_memory.te:
cat > mongodb_cgroup_memory.te <<EOF
module mongodb_cgroup_memory 1.0;
require {
type cgroup_t;
type mongod_t;
class dir search;
class file { getattr open read };
}#================ mongod_t =================allow mongod_t cgroup_t:dir search;
allow mongod_t cgroup_t:file { getattr open read };
EOF
创建后,编译和加载自定义策略模块,运行以下 3 个命令:
checkmodule -M -m -o mongodb_cgroup_memory.mod
mongodb_cgroup_memory.tesemodule_package -o mongodb_cgroup_memory.pp -m
mongodb_cgroup_memory.modsudo semodule -i mongodb_cgroup_memory.pp
MongoDB 进程现在能够以 SELinux 模式强制访问文件了。
2) 系统ulimit值
大多数类 UNIX 系统会限制进程所使用的系统资源数,MongoDB 4.4 之后,这个值低于 64 000 会影响 MongoDB 系统的运行,这个数值建议设置到 64 000。3) 以yum方式安装MongoDB的自动更新问题
以 yum 方式安装的 MongoDB 会自动更新,如果想要关闭自动更新功能,可以修改 /etc/yum.conf,在文件中加入如下内容:exclude=mongodb-org,mongodb-org-database,mongodb-org-server,mongodb-org-mongosh ,mongodb-org-mongos,mongodb-org-tools