MongoDB 是一个免费开源的文档数据库。它被归类为 NoSQL 数据库,这与 MySQL 和 PostgreSQL 等传统基于表的 SQL 数据库不同。

在 MongoDB 中,数据存储在灵活的、类似 JSON 的文档中,字段可以因文档而异。它不需要预定义的模式,数据结构可以随时间更改。

在本教程中,我们将向您展示如何从官方 MongoDB 仓库在 CentOS 7 服务器上安装和配置 MongoDB Community Edition。

前置条件

继续本教程之前,请确保您已登录为具有 sudo 权限的用户。

安装 MongoDB

撰写本文时,官方 MongoDB 仓库中可用的最新 MongoDB 版本是 4.0 版。在进行下一步之前,请访问 MongoDB 文档的“在 Red Hat 上安装”部分,检查是否有新版本发布。

按照以下步骤在您的 CentOS 服务器上安装最新稳定版本的 MongoDB:

  1. 启用 MongoDB 仓库

    要将 MongoDB 仓库添加到您的系统,请打开文本编辑器并在 /etc/yum.repos.d/ 目录内创建一个名为 mongodb-org.repo 的新 YUM 仓库配置文件:

    /etc/yum.repos.d/mongodb-org.repoini
    [mongodb-org-4.0]
    name=MongoDB Repository
    baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.0/x86_64/
    gpgcheck=1
    enabled=1
    gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc

    如果您想安装旧版本的 MongoDB,请将每个实例中的 4.0 替换为您首选的版本。

  2. 安装 MongoDB

    现在仓库已启用,您可以使用 yum 实用程序安装 mongodb-org 元包:

    sudo yum install mongodb-org

    在安装过程中,yum 将提示您导入 MongoDB GPG 密钥。输入 y 并按 Enter。

    以下软件包将作为 mongodb-org 包的一部分安装在您的系统上:

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

    安装完成后,启动 MongoDB 守护进程并使其在启动时自动运行,输入:

    sudo systemctl start mongod
    sudo systemctl enable mongod
  4. 验证 MongoDB 安装

    为了验证安装,我们将使用 mongo 工具连接到 MongoDB 数据库服务器并打印服务器版本:

    mongo

    进入 MongoDB shell 后,输入以下命令以显示 MongoDB 版本:

    db.version()

    输出结果如下所示:

    4.0.1

配置 MongoDB

您可以通过编辑 /etc/mongod.conf 配置文件来配置您的 MongoDB 实例,该文件采用 YAML 格式编写。

默认配置设置在大多数情况下已经足够。然而,对于生产环境,我们建议取消注释安全部分并启用授权,如下所示:

/etc/mongod.confyaml
security:
  authorization: enabled

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

修改 MongoDB 配置文件后,请重启 mongod 服务:

sudo systemctl restart mongod

要了解 MongoDB 4.0 中可用的配置选项的更多信息,请访问 Configuration File Options 文档页面。

创建管理员 MongoDB 用户

如果您启用了 MongoDB 身份验证,请创建一个管理员 MongoDB 用户,您将使用该用户访问和管理您的 MongoDB 实例。

首先使用以下命令访问 mongo shell:

mongo

进入 MongoDB shell 后,输入以下命令连接到 admin 数据库:

use admin
switched to db admin

创建一个名为 mongoAdmin 的新用户,角色为 userAdminAnyDatabase:

db.createUser(
  {
    user: "mongoAdmin", 
    pwd: "changeMe", 
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)
Successfully added user: {
	 : "mongoAdmin",
	"roles" : [
		{
			"role" : "userAdminAnyDatabase",
			"db" : "admin"
		}
	]
}
您可以按任意名称命名管理员 MongoDB 用户。

退出 mongo shell:

quit()

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

mongo -u mongoAdmin -p --authenticationDatabase admin
use admin
switched to db admin

现在,使用以下命令打印用户列表:

show users
{
	"_id" : "admin.mongoAdmin",
	 : "mongoAdmin",
	"db" : "admin",
	"roles" : [
		{
			"role" : "userAdminAnyDatabase",
			"db" : "admin"
		}
	],
	"mechanisms" : [
		"SCRAM-SHA-1",
		"SCRAM-SHA-256"
	]
}

您也可以尝试不带任何参数访问 mongo shell(只需输入 mongo),看看是否可以使用上述相同命令列出用户。