在 Debian 10 中安装和配置 MongoDB

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

发布于

MongoDB 是一个开源的、跨平台的、面向文档的数据库,它使用 JSON 格式的文档来存储数据,支持灵活的查询和索引,以及丰富的聚合和分析功能。MongoDB 适用于处理大量的非结构化或半结构化的数据,例如社交媒体、物联网、内容管理等领域。

本文将介绍如何在 Debian 10 系统中安装和配置 MongoDB,以及如何使用一些基本的命令来操作数据库。本文假设您已经拥有了一个 Debian 10 系统,并且具有 root 权限或 sudo 权限。

先决条件

在开始安装和配置 MongoDB 之前,您需要完成以下几个步骤:

  • 更新您的系统软件包列表和软件包,以确保您的系统是最新的。您可以使用以下命令来执行这个操作:

    sudo apt update
    sudo apt upgrade
    
  • 安装一些必要的软件包,例如 gnupgcurlwget 等,这些软件包将用于下载和验证 MongoDB 的安装包。您可以使用以下命令来安装这些软件包:

    sudo apt install gnupg curl wget
    
  • 导入 MongoDB 的公钥,以便验证 MongoDB 的安装包的签名。您可以使用以下命令来导入公钥:

    wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add -
    
  • 添加 MongoDB 的官方仓库到您的系统的软件源列表中,以便从 MongoDB 的官方网站下载最新的 MongoDB 版本。您可以使用以下命令来添加仓库:

    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
sudo apt install mongodb-org

这个命令将会安装以下几个软件包:

  • mongodb-org:这是一个元软件包,它包含了以下几个子软件包的依赖关系。
  • mongodb-org-server:这是 MongoDB 的核心组件,它提供了数据库的服务和功能。
  • mongodb-org-mongos:这是 MongoDB 的分片路由器,它用于在分片集群中路由请求和数据。
  • mongodb-org-shell:这是 MongoDB 的命令行客户端,它用于与数据库进行交互和管理。
  • mongodb-org-tools:这是 MongoDB 的一些辅助工具,例如 mongodumpmongorestoremongoexportmongoimport 等,它们用于备份、恢复、导出、导入数据等操作。

配置 MongoDB

安装完成 MongoDB 之后,您需要对 MongoDB 进行一些基本的配置,以便按照您的需求使用 MongoDB。以下是一些常见的配置选项:

  • 启用或禁用 MongoDB 的服务。您可以使用以下命令来启动、停止、重启或查看 MongoDB 的服务状态:

    sudo systemctl start mongod # 启动 MongoDB 的服务
    sudo systemctl stop mongod # 停止 MongoDB 的服务
    sudo systemctl restart mongod # 重启 MongoDB 的服务
    sudo systemctl status mongod # 查看 MongoDB 的服务状态
    
  • 修改 MongoDB 的配置文件。MongoDB 的配置文件位于 /etc/mongod.conf,它使用 YAML 格式来定义 MongoDB 的各种参数和选项。您可以使用您喜欢的文本编辑器来修改这个文件,例如 nanovim 等。以下是一些常见的配置参数:

    # MongoDB 的配置文件示例
    
    # 指定 MongoDB 的数据目录,用于存储数据库的文件
    storage:
      dbPath: /var/lib/mongodb
    
    # 指定 MongoDB 的日志目录,用于记录数据库的运行日志
    systemLog:
      destination: file
      logAppend: true
      path: /var/log/mongodb/mongod.log
    
    # 指定 MongoDB 的网络参数,用于设置数据库的端口号和绑定的地址
    net:
      port: 27017 # MongoDB 的默认端口号是 27017,您可以根据需要修改
      bindIp: 127.0.0.1 # MongoDB 的默认绑定地址是 127.0.0.1,即只允许本地访问,您可以根据需要修改
    
    # 指定 MongoDB 的安全参数,用于设置数据库的认证和授权机制
    security:
      authorization: enabled # 启用数据库的用户认证,需要创建用户和角色
      # keyFile: /path/to/keyfile # 如果使用副本集或分片集群,需要指定一个密钥文件,用于节点之间的认证
    
  • 创建 MongoDB 的用户和角色。如果您启用了 MongoDB 的用户认证,您需要创建至少一个用户和角色,以便登录和操作数据库。您可以使用以下命令来创建用户和角色:

    # 连接到 MongoDB 的 shell
    mongo
    
    # 切换到 admin 数据库,用于管理用户和角色
    use admin
    
    # 创建一个名为 admin 的用户,拥有 root 角色,可以对任何数据库进行任何操作
    db.createUser({user: "admin", pwd: "admin123", roles: ["root"]})
    
    # 创建一个名为 user 的用户,拥有 readWrite 角色,可以对 test 数据库进行读写操作
    db.createUser({user: "user", pwd: "user123", roles: [{role: "readWrite", db: "test"}]})
    
  • 设置 MongoDB 的初始密码。如果您启用了 MongoDB 的用户认证,您需要设置一个初始密码,以便登录数据库。您可以使用以下命令来设置初始密码:

    # 连接到 MongoDB 的 shell
    mongo
    
    # 切换到 admin 数据库,用于管理用户和角色
    use admin
    
    # 设置 admin 用户的初始密码
    db.changeUserPassword("admin", "admin123")
    
    # 设置 user 用户的初始密码
    db.changeUserPassword("user", "user123")
    

验证 MongoDB 的安装

完成了 MongoDB 的安装和配置之后,您需要验证 MongoDB 是否能够正常运行。您可以使用以下命令来验证 MongoDB 的安装:

  • 查看 MongoDB 的版本信息。您可以使用以下命令来查看 MongoDB 的版本信息:

    mongod --version # 查看 MongoDB 服务的版本信息
    mongo --version # 查看 MongoDB 客户端的版本信息
    
  • 连接到 MongoDB 的 shell。您可以使用以下命令来连接到 MongoDB 的 shell,以便与数据库进行交互和管理:

    mongo # 连接到本地的 MongoDB 服务,如果启用了用户认证,需要指定用户名和密码
    mongo --host 192.168.1.100 --port 27017 # 连接到远程的 MongoDB 服务,需要指定主机地址和端口号
    mongo --host 192.168.1.100 --port 27017 -u admin -p admin123
    

操作 MongoDB

在连接到 MongoDB 的 shell 之后,您可以使用一些基本的命令来操作数据库。以下是一些常见的命令:

  • 列出所有的数据库。您可以使用以下命令来列出所有的数据库:

    show dbs # 列出所有的数据库
    
  • 切换到一个数据库。您可以使用以下命令来切换到一个数据库,如果该数据库不存在,将会自动创建:

    use test # 切换到 test 数据库
    
  • 列出一个数据库中的所有的集合。您可以使用以下命令来列出一个数据库中的所有的集合,集合相当于关系型数据库中的表:

    show collections # 列出当前数据库中的所有的集合
    
  • 创建一个集合。您可以使用以下命令来创建一个集合,如果该集合不存在,将会自动创建:

    db.createCollection("users") # 创建一个名为 users 的集合
    
  • 删除一个集合。您可以使用以下命令来删除一个集合,如果该集合不存在,将不会有任何影响:

    db.users.drop() # 删除 users 集合
    
  • 插入一个文档。您可以使用以下命令来插入一个文档,文档相当于关系型数据库中的记录,文档使用 JSON 格式来表示数据:

    db.users.insertOne({name: "Alice", age: 20, email: "[email protected]"}) # 插入一个文档到 users 集合中
    
  • 查询一个文档。您可以使用以下命令来查询一个文档,可以指定查询条件和投影字段:

    db.users.findOne({name: "Alice"}) # 查询 users 集合中名为 Alice 的文档
    db.users.find({age: {$gt: 18}}, {name: 1, email: 1, _id: 0}) # 查询 users 集合中年龄大于 18 的文档,并只返回 name 和 email 字段
    
  • 更新一个文档。您可以使用以下命令来更新一个文档,可以指定更新条件和更新操作:

    db.users.updateOne({name: "Alice"}, {$set: {age: 21}}) # 更新 users 集合中名为 Alice 的文档的 age 字段为 21
    db.users.updateMany({age: {$lt: 18}}, {$inc: {age: 1}}) # 更新 users 集合中年龄小于 18 的文档的 age 字段加 1
    
  • 删除一个文档。您可以使用以下命令来删除一个文档,可以指定删除条件:

    db.users.deleteOne({name: "Alice"}) # 删除 users 集合中名为 Alice 的文档
    db.users.deleteMany({age: {$gt: 30}}) # 删除 users 集合中年龄大于 30 的文档
    
  • 创建一个索引。您可以使用以下命令来创建一个索引,索引可以提高查询的效率,但也会占用额外的空间和时间:

    db.users.createIndex({name: 1}) # 创建一个升序的索引在 users 集合的 name 字段上
    db.users.createIndex({email: 1}, {unique: true}) # 创建一个唯一的索引在 users 集合的 email 字段上
    
  • 删除一个索引。您可以使用以下命令来删除一个索引,如果该索引不存在,将不会有任何影响:

    db.users.dropIndex({name: 1}) # 删除 users 集合的 name 字段上的索引
    db.users.dropIndexes() # 删除 users 集合的所有的索引
    
  • 退出 MongoDB 的 shell。您可以使用以下命令来退出 MongoDB 的 shell:

    exit # 退出 MongoDB 的 shell
    

结论

本文介绍了如何在 Debian 10 系统中安装和配置 MongoDB,以及如何使用一些基本的命令来操作数据库。您可以根据您的实际需求和场景来调整 MongoDB 的参数和选项,以达到最佳的性能和安全性。您也可以参考 MongoDB 的官方文档,以了解更多的 MongoDB 的功能和特性。