在 Debian 11 中安装和配置 MongoDB

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

发布于

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

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

先决条件

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

  • 您已经安装了 Debian 11 系统,并且拥有 root 权限或 sudo 权限。
  • 您已经更新了系统的软件包,并且安装了必要的依赖包,比如 wgetcurlgnupg 等。您可以使用以下命令来更新和安装:
sudo apt update -y
sudo apt install -y wget curl gnupg
  • 您已经导入了 MongoDB 的公钥,并添加了 MongoDB 的官方仓库,以便从中下载和安装最新版本的 MongoDB。您可以使用以下命令来导入和添加:
wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/debian buster/mongodb-org/5.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list

安装 MongoDB

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

sudo apt update -y
sudo apt 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.1d  10 Sep 2019",
    "modules": [],
    "allocator": "tcmalloc",
    "environment": {
        "distmod": "debian10",
        "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.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 官方文档 来了解更多关于更新和删除文档的信息。

结论

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