MongoDB是一个开源、跨平台的分布式NoSQL(非关系型)数据库系统。与传统的SQL数据库使用表格存储数据不同,MongoDB使用灵活的文档格式来存储各种类型的数据。MongoDB使用二进制JSON格式(BSON)来存储数据。
MongoDB是一个分布式NoSQL数据库,内置高可用性、自动故障转移和数据冗余功能,并支持通过分片在分布式集群中进行水平扩展。它支持多区域地理部署,并提供支持CRUD操作(读写)、数据聚合管道、文本搜索和地理空间查询的查询API。
本教程将介绍如何在Alma Linux 9服务器上安装MongoDB。你还将启用MongoDB身份验证,设置MongoDB管理员用户,并为应用程序创建新的数据库和用户。
前提条件
开始本教程前,请确保满足以下条件:
- 一台Alma Linux 9服务器
- 一个具有管理员权限的非root用户
准备系统(禁用THP、设置ulimit和sysctl.conf)
在本节中,你将准备和配置Alma Linux服务器以安装MongoDB。以下是你必须完成的三个主要任务:
- 通过systemd服务禁用透明大页(THP)
- 增加mongod用户的最大进程数和打开文件数
- 通过/etc/sysctl.conf文件设置vm-max参数
首先,运行以下dnf命令在Alma Linux系统上安装nano文本编辑器。
sudo dnf install nano -y
现在创建一个新的服务文件/etc/systemd/system/disable-thp.service来禁用透明大页(THP)。该服务还将在每次系统启动时自动运行。
sudo nano /etc/systemd/system/disable-thp.service
将以下配置插入文件中。
[Unit] Description=Disable Transparent Huge Pages (THP) [Service] Type=simple ExecStart=/bin/sh -c "echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled && echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag" [Install] WantedBy=multi-user.target
完成后,保存并退出文件。
接下来,运行以下systemctl命令重新加载systemd管理器并应用更改。
sudo systemctl daemon-reload
最后,使用以下命令启动并启用disable-thp.service。这样,THP将在启动时自动禁用。
sudo systemctl enable --now disable-thp.service

使用nano编辑器创建新配置文件/etc/security/limits.d/mongodb.conf。
sudo nano /etc/security/limits.d/mongodb.conf
将以下配置插入文件中。这将允许mongod用户运行最多64000个进程和打开64000个文件描述符。
mongod soft nproc 64000 mongod hard nproc 64000 mongod soft nofile 64000 mongod hard nofile 64000
保存文件并退出编辑器。
使用nano编辑器打开文件/etc/sysctl.conf。
sudo nano /etc/sysctl.conf
添加以下行来设置fs.file-max、max map count和swappiness参数。
fs.file-max = 2097152 vm.max_map_count = 262144 vm.swappiness = 1
保存文件并退出编辑器。
现在运行以下sysctl命令应用更改。
sudo sysctl -p

(可选)你也可以重启服务器以应用所有更改。
sudo reboot
安装MongoDB
完成Alma Linux服务器的配置后,开始安装MongoDB服务器。在本例中,你将在Alma Linux 9服务器上安装MongoDB 7.0。
首先,使用nano编辑器创建新的MongoDB仓库文件/etc/yum.repos.d/mongodb-org-7.0.repo。
sudo nano /etc/yum.repos.d/mongodb-org-7.0.repo
将以下配置插入文件中。
[mongodb-org-7.0] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/9/mongodb-org/7.0/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://pgp.mongodb.com/server-7.0.asc
保存文件并退出编辑器。
现在运行以下dnf命令列出Alma Linux服务器上的可用仓库。你将看到MongoDB仓库已被添加。
sudo dnf repolist

接下来,运行以下dnf install命令在系统上安装MongoDB和MongoDB Shell。输入Y确认安装。
sudo dnf install mongodb-org mongodb-mongosh

安装完成后,启动并启用MongoDB的mongod服务,然后检查mongod服务状态以确保其正在运行。
sudo systemctl enable --now mongod
sudo systemctl status mongod
你可以看到MongoDB正在Alma Linux服务器上运行。

启用MongoDB身份验证
此时,MongoDB服务器已经在Alma Linux服务器上运行。现在你将通过启用密码认证和设置新的MongoDB管理员用户来保护MongoDB安装。此外,你还将学习基本的mongosh(MongoDB Shell)命令来管理MongoDB服务器。
首先,使用以下mongosh命令登录MongoDB服务器。
mongosh
登录MongoDB后,运行以下查询以禁用MongoDB遥测功能。
disableTelemetry()
现在切换到admin数据库,运行以下查询为MongoDB设置管理员用户。在本例中,你将创建一个名为myAliceAdmin的新用户作为MongoDB管理员。输入你的密码。
use admin
db.createUser(
{
user: "myAliceAdmin",
pwd: passwordPrompt(),
roles: [
{ role: "userAdminAnyDatabase", db: "admin" },
{ role: "readWriteAnyDatabase", db: "admin" }
]
}
)
如果新用户创建成功,你将看到输出{ ok: 1 }。
输入quit()退出MongoDB服务器。

接下来,使用nano编辑器打开文件/etc/mongod.conf。
sudo nano /etc/mongod.conf
取消注释security选项并添加authorization: enabled以启用MongoDB的密码认证。
security: authorization: enabled
保存文件并退出编辑器。
现在运行以下systemctl命令重启mongod服务以应用更改。这样,MongoDB服务器将以启用认证的模式运行。
sudo systemctl restart mongod
接下来,运行以下mongosh命令登录MongoDB。
mongosh

切换到admin数据库,并使用以下查询作为myAliceAdmin用户进行认证。输入你的密码。
use admin
db.auth("myAliceAdmin", passwordPrompt())
如果认证成功,你将获得输出{ ok: 1 }。

此外,你还可以使用以下mongosh命令通过myAliceAdmin用户登录admin数据库。
mongosh --port 27017 --authenticationDatabase \
"admin" -u "myAliceAdmin" -p
在MongoDB中创建用户
在本节中,你将通过mongosh客户端在MongoDB中创建新的数据库和用户。
要在MongoDB中创建新的数据库和用户,运行以下查询。在本例中,你将创建一个名为mydb的新数据库和一个名为myUser的新用户。输入你的密码。
use mydb
db.createUser(
{
user: "myUser",
pwd: passwordPrompt(),
roles: [
{ role: "readWrite", db: "mydb" },
{ role: "read", db: "reporting" }
]
}
)
如果新数据库和用户创建成功,你将获得输出{ ok: 1 },然后输入quit()退出。

接下来,使用以下mongosh命令登录MongoDB服务器。输入myUser的密码。
mongosh --port 27017 --authenticationDatabase \
"mydb" -u "myUser" -p
如果成功,你将获得MongoDB Shell的提示符。

总结
恭喜!你已完成在Alma Linux 9服务器上安装MongoDB。你还通过创建管理员用户和启用密码认证来保护了MongoDB。最后,你还学习了如何在MongoDB中创建数据库和用户,以及一些通过命令行连接MongoDB服务器的基本mongosh命令。