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-orgmongodb-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: enabledauthorization 选项启用基于角色的访问控制 (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 adminshow 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']}]