在 CentOS Stream 9 中安装和配置 MongoDB

本文将介绍如何在 CentOS Stream 9 系统中安装和配置 MongoDB,以及如何使用一些基本的命令来操作 MongoDB 数据库。

发布于

MongoDB 是一个开源的、跨平台的、面向文档的数据库,它使用 JSON 格式的文档来存储数据,支持灵活的查询和索引,以及分布式的架构和高可用性。MongoDB 是目前最流行的 NoSQL 数据库之一,广泛应用于各种场景,比如 Web 应用、物联网、大数据分析等。

本文将介绍如何在 CentOS Stream 9 系统中安装和配置 MongoDB,以及如何使用一些基本的命令来操作 MongoDB 数据库。

先决条件

在开始安装和配置 MongoDB 之前,您需要满足以下条件:

  • 您已经安装了 CentOS Stream 9 系统,并且拥有 root 权限或 sudo 权限。
  • 您已经更新了系统的软件包,并且安装了必要的依赖包,比如 wgetcurlgnupg 等。您可以使用以下命令来更新和安装:
sudo dnf update -y
sudo dnf install -y wget curl gnupg
  • 您已经配置了 MongoDB 的官方仓库,以便从中下载和安装最新版本的 MongoDB。您可以使用以下命令来配置仓库:
cat <<EOF | sudo tee /etc/yum.repos.d/mongodb-org.repo
[mongodb-org]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/8/mongodb-org/5.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-5.0.asc
EOF

安装 MongoDB

完成了先决条件之后,您就可以开始安装 MongoDB 了。您可以使用以下命令来安装 MongoDB:

sudo dnf install -y mongodb-org

这个命令会安装 MongoDB 的最新稳定版本,以及相关的工具和服务。如果您想安装特定版本的 MongoDB,您可以在 mongodb-org 后面加上版本号,比如 mongodb-org-5.0.3

安装完成后,您可以使用以下命令来检查 MongoDB 的版本:

mongod --version

您应该看到类似以下的输出:

db version v5.0.3
Build Info: {
    "version": "5.0.3",
    "gitVersion": "657fea5a61a74d7a79df7aff8e4bcf0bc742b748",
    "openSSLVersion": "OpenSSL 1.1.1k  FIPS 25 Mar 2021",
    "modules": [],
    "allocator": "tcmalloc",
    "environment": {
        "distmod": "rhel80",
        "distarch": "x86_64",
        "target_arch": "x86_64"
    }
}

配置 MongoDB

在安装 MongoDB 之后,您需要对 MongoDB 进行一些基本的配置,以便更好地使用和管理 MongoDB。

配置 MongoDB 服务

MongoDB 安装后会自动创建一个名为 mongod 的系统服务,您可以使用 systemctl 命令来管理这个服务。您可以使用以下命令来启动、停止、重启、查看状态和开机自启动这个服务:

# 启动服务
sudo systemctl start mongod

# 停止服务
sudo systemctl stop mongod

# 重启服务
sudo systemctl restart mongod

# 查看服务状态
sudo systemctl status mongod

# 开机自启动服务
sudo systemctl enable mongod

您可以使用以下命令来查看 MongoDB 服务的日志:

sudo journalctl -u mongod

MongoDB 服务的配置文件位于 /etc/mongod.conf,您可以根据您的需求修改这个文件中的一些选项,比如 bindIpportstoragesecurity 等。修改配置文件后,您需要重启 MongoDB 服务才能生效。

配置 MongoDB 用户和角色

为了提高 MongoDB 的安全性,您需要为 MongoDB 创建一个管理员用户,并为其分配合适的角色。您还可以为不同的数据库和集合创建不同的用户和角色,以实现细粒度的访问控制。

您可以使用以下步骤来创建一个管理员用户:

  1. 启动 MongoDB 服务,并使用 mongo 命令连接到本地的 MongoDB 实例:

    sudo systemctl start mongod
    mongo
    
  2. 切换到 admin 数据库,并使用 db.createUser() 方法创建一个名为 admin 的用户,为其分配 root 角色,以及一个强密码:

    use admin
    db.createUser(
      {
        user: "admin",
        pwd: "your_strong_password",
        roles: [ { role: "root", db: "admin" } ]
      }
    )
    
  3. 退出 MongoDB shell,并修改 /etc/mongod.conf 文件,将 security.authorization 选项的值设置为 enabled,以启用身份验证:

    exit
    sudo nano /etc/mongod.conf
    

    找到以下部分,并修改为:

    security:
      authorization: enabled
    
  4. 重启 MongoDB 服务,并使用 mongo 命令重新连接到 MongoDB 实例,这次需要使用 -u-p 选项指定用户名和密码,以及 --authenticationDatabase 选项指定验证数据库:

    sudo systemctl restart mongod
    mongo -u admin -p your_strong_password --authenticationDatabase admin
    
  5. 您可以使用 show users 命令来查看当前数据库的用户,以及 show roles 命令来查看当前数据库的角色:

    show users
    show roles
    

您可以参考 MongoDB 官方文档 来了解更多关于创建用户和角色的信息。

操作 MongoDB

在完成了 MongoDB 的安装和配置之后,您就可以开始使用 MongoDB 了。您可以使用 mongo 命令来连接到 MongoDB 实例,并使用一些基本的命令来操作 MongoDB 数据库。

连接到 MongoDB

您可以使用以下命令来连接到本地或远程的 MongoDB 实例:

# 连接到本地的 MongoDB 实例
mongo -u username -p password --authenticationDatabase database

# 连接到远程的 MongoDB 实例
mongo -u username -p password --authenticationDatabase database --host hostname --port port

其中,usernamepassworddatabasehostnameport 需要根据您的实际情况进行替换。

连接成功后,您会进入到 MongoDB shell,您可以在这里执行各种操作。

创建和切换数据库

您可以使用 use 命令来创建或切换数据库。如果数据库不存在,那么 MongoDB 会在第一次插入数据时自动创建它。例如,您可以使用以下命令来创建或切换到一个名为 test 的数据库:

use test

您可以使用 db 命令来查看当前所在的数据库:

db

您可以使用 show dbs 命令来查看所有的数据库:

show dbs

创建和删除集合

您可以使用 db.createCollection() 方法来创建一个集合,如果集合不存在,那么 MongoDB 会在第一次插入数据时自动创建它。例如,您可以使用以下命令来创建一个名为 users 的集合:

db.createCollection("users")

您可以使用 show collections 命令来查看当前数据库中的所有集合:

show collections

您可以使用 db.collection.drop() 方法来删除一个集合,其中 collection 是集合的名称。例如,您可以使用以下命令来删除一个名为 users 的集合:

db.users.drop()

您可以参考 MongoDB 官方文档 来了解更多关于创建和删除集合的信息。

插入和查询文档

您可以使用 db.collection.insertOne() 方法来插入一个文档到一个集合中,其中 collection 是集合的名称,文档是一个 JSON 格式的对象。例如,您可以使用以下命令来插入一个名为 Alice,年龄为 25 的用户到 users 集合中:

db.users.insertOne({name: "Alice", age: 25})

您可以使用 db.collection.insertMany() 方法来插入多个文档到一个集合中,其中文档是一个 JSON 格式的数组。例如,您可以使用以下命令来插入两个用户到 users 集合中:

db.users.insertMany([{name: "Bob", age: 30}, {name: "Charlie", age: 35}])

您可以使用 db.collection.find() 方法来查询一个集合中的文档,其中 collection 是集合的名称,查询条件是一个 JSON 格式的对象。如果不指定查询条件,那么会返回所有的文档。例如,您可以使用以下命令来查询 users 集合中的所有文档:

db.users.find()

您可以使用 db.collection.findOne() 方法来查询一个集合中的第一个匹配的文档,其中查询条件和用法与 db.collection.find() 相同。例如,您可以使用以下命令来查询 users 集合中年龄大于 30 的第一个文档:

db.users.findOne({age: {$gt: 30}})

您可以参考 MongoDB 官方文档 来了解更多关于插入和查询文档的信息。

更新和删除文档

您可以使用 db.collection.updateOne() 方法来更新一个集合中的第一个匹配的文档,其中 collection 是集合的名称,查询条件是一个 JSON 格式的对象,更新操作是一个 JSON 格式的对象,可以使用 $set$inc$push 等更新操作符。例如,您可以使用以下命令来更新 users 集合中名为 Alice 的用户的年龄为 26

db.users.updateOne({name: "Alice"}, {$set: {age: 26}})

您可以使用 db.collection.updateMany() 方法来更新一个集合中的多个匹配的文档,其中查询条件和更新操作与 db.collection.updateOne() 相同。例如,您可以使用以下命令来更新 users 集合中所有年龄大于 30 的用户的年龄加 1

db.users.updateMany({age: {$gt: 30}}, {$inc: {age: 1}})

您可以使用 db.collection.deleteOne() 方法来删除一个集合中的第一个匹配的文档,其中 collection 是集合的名称,查询条件是一个 JSON 格式的对象。例如,您可以使用以下命令来删除 users 集合中名为 Bob 的用户:

db.users.deleteOne({name: "Bob"})

您可以使用 db.collection.deleteMany() 方法来删除一个集合中的多个匹配的文档,其中查询条件与 db.collection.deleteOne() 相同。例如,您可以使用以下命令来删除 users 集合中所有年龄小于 30 的用户:

db.users.deleteMany({age: {$lt: 30}})

您可以参考 MongoDB 官方文档 来了解更多关于更新和删除文档的信息。

结论

本文介绍了如何在 CentOS Stream 9 系统中安装和配置 MongoDB,以及如何使用一些基本的命令来操作 MongoDB 数据库。您可以使用 MongoDB 来存储和处理各种类型的数据,实现高性能和高可扩展性的应用。您还可以使用 MongoDB 的其他特性,比如聚合、索引、事务、分片、副本集等,来提高 MongoDB 的功能和性能。您可以访问 MongoDB 官方网站MongoDB 官方文档 来了解更多关于 MongoDB 的信息。