MongoDB 是一个免费开源的文档数据库。它被归类为 NoSQL 数据库,这与 MySQL 和 PostgreSQL 等传统基于表的 SQL 数据库不同。
在 MongoDB 中,数据存储在灵活的、类似 JSON 的文档中,字段可以因文档而异。它不需要预定义的模式,数据结构可以随时间更改。
在本教程中,我们将向您展示如何从官方 MongoDB 仓库在 CentOS 7 服务器上安装和配置 MongoDB Community Edition。
前置条件
继续本教程之前,请确保您已登录为具有 sudo 权限的用户。
安装 MongoDB
撰写本文时,官方 MongoDB 仓库中可用的最新 MongoDB 版本是 4.0 版。在进行下一步之前,请访问 MongoDB 文档的“在 Red Hat 上安装”部分,检查是否有新版本发布。
按照以下步骤在您的 CentOS 服务器上安装最新稳定版本的 MongoDB:
启用 MongoDB 仓库
要将 MongoDB 仓库添加到您的系统,请打开文本编辑器并在
/etc/yum.repos.d/mongodb-org.repoini/etc/yum.repos.d/目录内创建一个名为mongodb-org.repo的新 YUM 仓库配置文件:[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替换为您首选的版本。安装 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 工具,用于导入和导出数据、统计以及其他实用程序。
启动 MongoDB
安装完成后,启动 MongoDB 守护进程并使其在启动时自动运行,输入:
sudo systemctl start mongod sudo systemctl enable mongod验证 MongoDB 安装
为了验证安装,我们将使用
mongo工具连接到 MongoDB 数据库服务器并打印服务器版本:mongo进入 MongoDB shell 后,输入以下命令以显示 MongoDB 版本:
db.version()输出结果如下所示:
4.0.1
配置 MongoDB
您可以通过编辑 /etc/mongod.conf 配置文件来配置您的 MongoDB 实例,该文件采用 YAML 格式编写。
默认配置设置在大多数情况下已经足够。然而,对于生产环境,我们建议取消注释安全部分并启用授权,如下所示:
/etc/mongod.confyamlsecurity:
authorization: enabledauthorization 选项启用了基于角色的访问控制 (RBAC),用于调节用户对数据库资源和操作的访问。如果禁用此选项,每个用户都将能够访问任何数据库并执行任何操作。
修改 MongoDB 配置文件后,请重启 mongod 服务:
sudo systemctl restart mongod要了解 MongoDB 4.0 中可用的配置选项的更多信息,请访问 Configuration File Options 文档页面。
创建管理员 MongoDB 用户
如果您启用了 MongoDB 身份验证,请创建一个管理员 MongoDB 用户,您将使用该用户访问和管理您的 MongoDB 实例。
首先使用以下命令访问 mongo shell:
mongo进入 MongoDB shell 后,输入以下命令连接到 admin 数据库:
use adminswitched 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 adminuse adminswitched 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),看看是否可以使用上述相同命令列出用户。