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

禁用THP服务

使用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

配置ulimit和sysctl

(可选)你也可以重启服务器以应用所有更改。

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

添加MongoDB仓库

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

sudo dnf install mongodb-org mongodb-mongosh

安装MongoDB

安装完成后,启动并启用MongoDB的mongod服务,然后检查mongod服务状态以确保其正在运行。

sudo systemctl enable --now mongod
sudo systemctl status mongod

你可以看到MongoDB正在Alma Linux服务器上运行。

启动并验证MongoDB

启用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

连接MongoDB

切换到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命令。