MongoDB 是一款免费且开源的文档数据库。它属于 NoSQL 数据库家族,与 MySQL 和 PostgreSQL 等传统基于表的 SQL 数据库不同。MongoDB 中的数据存储在灵活的、类似 JSON 的文档中,字段可以在文档之间有所不同。它不需要预定义的架构,数据结构可以随时间改变。

MongoDB 的一些关键特性包括复制、索引、用户定义搜索、负载均衡和 JavaScript 执行。

本指南涵盖在 Ubuntu 上安装 MongoDB 的分步过程。

先决条件

要遵循安装步骤,请确保您以 root 或具有 sudo 权限的用户身份在 Ubuntu 22.04 或 20.04 实例上执行命令。

在 Ubuntu 上安装 MongoDB

标准的 Ubuntu 存储库通常包含过时的 MongoDB 版本。我们将安装官方的 MongoDB 软件包,这些软件包始终处于最新状态。在 Ubuntu 上安装 MongoDB 相当直接。我们将启用 MongoDB 存储库、导入存储库 GPG 密钥并安装 MongoDB 软件包。

撰写本文时,官方 MongoDB 存储库中可用的最新 MongoDB 版本是 7.0 版。

第一步是安装添加新存储库所需的依赖项。很可能您已经将这些软件包安装在系统上,但某些软件包可能缺失:

终端

sudo apt updatesudo apt install gnupg wget apt-transport-https ca-certificates software-properties-common

接下来,将 MongoDB 存储库的 GPG 密钥导入到您的系统:

终端

wget -qO- \ https://pgp.mongodb.com/server-7.0.asc | \ gpg --dearmor | \ sudo tee /usr/share/keyrings/mongodb-server-7.0.gpg >/dev/null

通过创建以下文件添加 MongoDB 存储库:

终端

echo "deb [arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg] \ https://repo.mongodb.org/apt/ubuntu $(lsb_release -cs)/mongodb-org/7.0 multiverse" | \ sudo tee -a /etc/apt/sources.list.d/mongodb-org-7.0.list

上述命令中的 $(lsb_release -cs) 部分打印 Ubuntu 代号。例如,如果您拥有 Ubuntu 22.04 版本,该命令将打印 jammy。

启用存储库后,更新本地软件包索引:

终端

sudo apt update

现在您可以通过输入以下命令安装 MongoDB:

终端

sudo apt install mongodb-org

mongodb-org 是一个元软件包,包含以下软件包:

  • mongodb-org-server - mongod守护程序及相应的初始化脚本和配置。
  • mongodb-org-mongos - mongos 守护程序。
  • mongodb-org-shell - mongo shell,MongoDB 的交互式 JavaScript 接口。它用于通过命令行执行管理任务。
  • mongodb-org-tools - 包含几个用于导入和导出数据、统计信息以及其他实用程序的 MongoDB 工具。

默认情况下,安装后不会启动 MongoDB 守护程序。要启动服务并在启动时启用它,请执行:

终端

sudo systemctl enable --now mongod

我们可以使用 mongosh shell 工具连接到 MongoDB 数据库服务器并打印连接状态来验证安装是否成功:

终端

mongosh --eval 'db.runCommand({connectionStatus: 1})'

输出将类似于以下内容:

输出

Current Mongosh Log ID: 655a70dfea9d876644ee6607Connecting to: mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+2.0.2Using MongoDB: 7.0.3Using Mongosh: 2.0.2{authInfo: {authenticatedUsers: [], authenticatedUserRoles: []}, ok: 1}

该命令返回有关连接状态和已认证用户及其权限的信息。ok 字段的值为 1 表示成功。

配置 MongoDB

MongoDB 配置文件位于 /etc 目录中,名为 mongod.conf。该文件使用 YAML 格式。

默认配置设置在大多数情况下已足够。但是,对于生产环境,我们建议取消注释安全部分并启用访问控制,如下所示:

终端

sudo nano /etc/mongod.conf

/etc/mongod.confyaml

security: authorization: enabled

authorization 选项启用基于角色的访问控制 (RBAC),该控制调节用户对数据库资源和操作的访问。如果未启用此选项,每个用户都将有权访问所有数据库并执行任何操作。

每当您对配置进行更改时,都需要重启 mongod 服务以使更改生效:

终端

sudo systemctl restart mongod

要查找有关最新 MongoDB 版本中可用配置选项的更多信息,请访问配置文件选项文档页面。

创建管理 MongoDB 用户

如果您启用了 MongoDB 身份验证,则需要创建一个可以访问和管理 MongoDB 实例的管理员用户。

访问 mongo shell:

终端

mongosh

在 MongoDB shell 内部,输入以下命令连接到 admin 数据库:

use admin

输出

switched to db admin

运行以下命令创建管理员用户:

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

我们将管理员用户命名为“myMongoAdmin”。请随意按您喜欢的名称调用它。您也可以输入明文密码而不是 passwordPrompt() 方法,但不建议在屏幕上显示您的密码,并且它也会保存到 shell 历史记录中。

系统将提示您输入密码,输入并按“Enter”。不要忘记设置安全的密码:

输出

Enter password

输出

********{ok: 1}

“ok: 1”表示命令已成功执行。

完成后,使用以下命令退出 mongo shell:

quit()

要测试更改,使用您之前创建的管理员用户访问 MongoDB shell:

终端

mongo -u myMongoAdmin -p --authenticationDatabase admin

如果您输入正确的密码,您将连接到 MogoDB shell。

切换到“admin”数据库并运行 show users 以获取所有用户及其角色的信息:

use admin

输出

switched to db admin
show users

在我们的示例中,我们只有一个用户:

输出

[{_id: 'admin.myMongoAdmin', userId: new UUID("a00ab5ca-5c1f-4a3b-8f67-be8a79c7649c"), user: 'myMongoAdmin', db: 'admin', roles: [{role: 'userAdminAnyDatabase', db: 'admin'}, {role: 'readWriteAnyDatabase', db: 'admin'}], mechanisms: ['SCRAM-SHA-1', 'SCRAM-SHA-256']}]