帮助中心
如何在Ubuntu 24.04上安装MongoDB并确保其安全

如何在Ubuntu 24.04上安装MongoDB并确保其安全


MongoDB 是一种开源、跨平台、分布式 NoSQL(非 SQL 或非关系型)数据库系统。MongoDB 不像传统的 SQL 数据库那样将数据存储在表格中,而是使用灵活的文档来存储各种数据形式。MongoDB 使用二进制 JSON 格式(BSON)来存储数据。


MongoDB 是一种分布式 NoSQL 数据库,具有内置高可用性、自动故障转移和数据冗余功能,并可通过分布式集群中的分片进行水平扩展。它支持多区域地理部署,提供的查询 API 支持 CRUD 操作(读写)、数据聚合管道、文本搜索和地理空间查询。


在本指南中,我们将向你展示如何在 Ubuntu 24.04 服务器上安装 MongoDB。你将准备好 Ubuntu 服务器,添加 MongoDB 资源库,安装 MongoDB 服务器,为 MongoDB 创建管理员,然后启用 MongoDB 身份验证。最后,你将学习如何使用 “mongosh ”shell 在 MongoDB 中创建用户和数据库。


前提条件


在开始之前,请确保您具备以下条件:


  • Ubuntu 24.04 服务器
  • 具有管理员权限的非 root 用户


准备系统


在 Ubuntu 系统上安装 MongoDB 之前,请确保已配置好系统。在本例中,你将对 Ubuntu 服务器进行以下配置:


  • 通过 systemd 禁用透明大页面
  • 增加默认 MongoDB “mongod ”用户的限制
  • 设置最大fs.file-max,并通过“/etc/systctl.conf ”文件启用交换功能


禁用透明超大页面 (THP)


要在系统上禁用 THP,需要创建一个新的 systemd 服务文件,该文件将在每次启动或启动时自动执行。


使用 “nano ”编辑器创建新的服务文件“/etc/systemd/system/disable-thp.service”。

sudo nano /etc/systemd/system/disable-thp.service

插入以下配置,通过服务禁用 THP。

[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 管理器,启动并启用 “disable-thp ”服务。这样,THP 就会在系统启动时禁用。

sudo systemctl daemon-reload
sudo systemctl enable --now disable-thp.service


设置上限


禁用 THP 后,需要将用户 “mongod ”的默认最大文件和进程数至少增至 “64000”。


使用以下 “nano ”编辑器命令创建新文件“/etc/security/limits.d/mongodb.conf”。

sudo nano /etc/security/limits.d/mongodb.conf

插入以下配置,将最大文件打开和进程数增加到 “64000”。

mongod soft nproc 64000
mongod hard nproc 64000
mongod soft nofile 64000
mongod hard nofile 64000

保存文件并退出编辑器。


设置交换性和 fs.file-max


最后,你需要增加默认的 “fs.file-max ”并启用 MongoDB 的交换性。为此,你需要编辑“/etc/sysctl.conf ”文件。


使用 “nano ”编辑器命令打开“/etc/sysctl.conf ”文件。

sudo nano /etc/sysctl.conf

插入以下配置,设置 fs.file-max 并启用交换。

fs.file-max = 2097152
vm.max_map_count = 262144
vm.swappiness = 1

完成后,保存文件并退出编辑器。


现在运行下面的 “sysctl ”命令,无需重启即可应用更改。

sudo sysctl -p


使用 APT 软件包管理器安装 MongoDB


配置好 Ubuntu 系统后,就可以安装 MongoDB 了。在本节中,你将从 MongoDB 官方软件仓库安装最新版本的 MongoDB 8.0。


首先,运行下面的 “apt ”命令更新你的Ubuntu软件包索引,并安装 “gnupg ”和 “curl ”软件包。输入 “Y ”确认安装。

sudo apt update && sudo apt install gnupg curl


现在运行以下命令,为 MongoDB 添加 GPG 密钥和存储库。在本例中,你将在 Ubuntu 24.04 服务器上安装 MongoDB 8。

curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | \
sudo gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg \
--dearmor
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu noble/mongodb-org/8.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list


接下来,运行下面的 “apt ”命令更新软件包索引,并在系统中安装 “mongodb-org ”软件包。输入 “Y ”继续安装。

sudo apt update && sudo apt install mongodb-org


安装完成后,执行下面的 “systemctl ”命令重新加载 systemd 管理器。mongod "服务就会添加到你的 Ubuntu 系统中。

sudo systemctl daemon-reload

最后,运行下面的命令启动、启用并验证 MongoDB “mongod ”服务。你会看到 MongoDB 正在你的系统上运行。

sudo systemctl enable --now mongod
sudo systemctl status mongod


确保 MongoDB 服务器的安全


安装 MongoDB 后,你将通过以下步骤确保 MongoDB 服务器安装的安全性:


  • 使用 “mongosh ”shell 为 MongoDB 创建一个新的管理员用户
  • 通过编辑配置文件“/etc/mongod.conf ”启用 MongoDB 身份验证


创建 MongoDB 管理员用户


在本节中,你将通过 “mongosh ”shell 创建一个新的 MongoDB 管理员用户。mongosh “shell是与MongoDB服务器交互的客户端命令行,就像MySQL/MariaDB的 ”mysql “和PostgreSQL的 ”psql"。


要创建管理员用户,请使用下面的 “mongosh ”shell 命令登录 MongoDB 服务器。

mongosh

现在运行下面的查询来禁用 MongoDB 遥测功能。

disableTelemetry()


接下来,转到数据库 “admin”,运行以下查询为 MongoDB 创建一个新的管理员用户。在本示例中,你将创建一个新用户 “myAdmin”,然后根据提示输入新密码。

use admin

db.createUser(
{
user: "myAdmin",
pwd: passwordPrompt(),
roles: [
{ role: "userAdminAnyDatabase", db: "admin" },
{ role: "readWriteAnyDatabase", db: "admin" }
]
}
)

现在输入 “quit() ”退出 MongoDB shell。



启用 MongoDB 身份验证


创建了 MongoDB 管理用户后,就可以通过“/etc/mongod.conf ”文件启用 MongoDB 身份验证了。


使用下面的 “nano ”编辑器命令打开默认的 MongoDB 服务器配置文件“/etc/mongod.conf”。

sudo nano /etc/mongod.conf

添加以下行以启用 MongoDB 身份验证。

security:
authorization: enabled

完成后,保存文件并退出编辑器。


现在运行下面的 “systemctl ”命令重启 MongoDB 服务器并应用更改。这样,MongoDB 身份验证就会启用。

sudo systemctl restart mongod


测试 MongoDB 身份验证


既然已经确保了 MongoDB 服务器安装的安全性,那么我们就用 “mongosh ”shell 和新的管理员用户及密码登录 MongoDB 来验证配置。


使用下面的 “mongosh ”命令,以用户 “myAdmin ”身份登录 MongoDB 服务器。根据提示输入密码。

mongosh --port 27017 --authenticationDatabase \
"admin" -u "myAdmin" -p


登录后,运行下面的查询检查连接状态。您应该已使用 “myAdmin ”用户登录 MongoDB 服务器。

db.runCommand({connectionStatus : 1})

现在输入 “quit() ”退出 MongoDB 服务器。



在 MongoDB 中创建数据库和用户


在本节中,你将学习如何使用 “mongosh ”shell 在 MongoDB 中创建新数据库和用户。因此,请确保您已以管理员用户身份登录 MongoDB。


首先,运行下面的查询移动到数据库 “mydb”。

use mydb

现在运行下面的查询,创建新用户 “myUser”,并允许对数据库 “mydb ”进行读写访问。要求输入密码时请输入。

db.createUser(
{
user: "myUser",
pwd: passwordPrompt(), // or cleartext password
roles: [ { role: "readWrite", db: "mydb" },
{ role: "read", db: "reporting" } ]
}
)

键入 “quit() ”退出 MongoDB 服务器。



现在运行下面的 “mongosh ”命令,以 “myUser ”身份登录数据库 “mydb”。根据提示输入密码。

mongosh --port 27017 --authenticationDatabase \
"mydb" -u "myUser" -p


登录后,使用以下查询检查连接状态。

db.runCommand({connectionStatus : 1})

您可以在下面看到,您已使用用户 “myUser ”连接到 MongoDB 服务器,并拥有数据库 “mydb ”的权限。



结论


恭喜您!您已经在 Ubuntu 24.04 服务器上完成了 MongoDB 服务器的安装。您还创建了管理员用户并确保了 MongoDB 的安装安全。然后,你已经学会了如何使用 “mongosh ”连接到 MongoDB 服务器,以及在 MongoDB 中管理用户和数据库的基本查询。

文章相关标签: Ubuntu 24.04 MongoDB

上一条: 如何在Linux上删除Docker映像

下一条: 没有了

购物车