在 Red Hat Linux 8 中安装和配置 MongoDB

本文将介绍如何在 Red Hat Linux 8 上安装和配置 MongoDB,以及如何进行基本的数据库操作。

发布于

MongoDB 是一个开源的文档型数据库,它使用 JSON 格式的文档来存储数据,支持灵活的查询和索引,以及分布式的架构和高可用性。MongoDB 可以在多种操作系统上运行,包括 Linux,Windows 和 Mac OS X。本文将介绍如何在 Red Hat Linux 8 上安装和配置 MongoDB,以及如何进行基本的数据库操作。

先决条件

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

  • 您需要有一个运行 Red Hat Linux 8 的服务器或虚拟机,以及一个具有 sudo 权限的用户账户。

  • 您需要确保您的系统已经更新到最新的版本,以及安装了必要的依赖包。您可以使用以下的命令来执行这些操作:

    sudo dnf update
    sudo dnf install wget curl gnupg
    
  • 您需要配置 MongoDB 的官方仓库,以便从中下载和安装 MongoDB 的软件包。您可以使用以下的命令来执行这个操作:

    sudo tee /etc/yum.repos.d/mongodb-org-5.0.repo << EOF
    [mongodb-org-5.0]
    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 mongodb-org

这个命令将会安装以下的组件:

  • mongodb-org-server:MongoDB 的服务器端程序,负责处理客户端的请求和管理数据库的数据。
  • mongodb-org-mongos:MongoDB 的分片路由器,负责在分片集群中分发客户端的请求和查询。
  • mongodb-org-shell:MongoDB 的命令行客户端,用于与 MongoDB 服务器进行交互和执行数据库操作。
  • mongodb-org-tools:MongoDB 的工具集,包括导入导出数据的工具,备份恢复数据的工具,以及性能分析和监控的工具。

配置 MongoDB

在安装了 MongoDB 的软件包之后,您需要对 MongoDB 的配置文件进行一些修改,以便按照您的需求和安全标准来运行 MongoDB。MongoDB 的配置文件位于 /etc/mongod.conf,您可以使用任意的文本编辑器来编辑它,比如 vinano。以下是一些常见的配置选项:

  • bindIp:指定 MongoDB 服务器监听的网络接口和 IP 地址。默认情况下,MongoDB 只监听本地回环地址 127.0.0.1,这意味着只有本地的客户端可以访问 MongoDB。如果您想让 MongoDB 可以被其他的主机访问,您可以将这个选项设置为 0.0.0.0,或者指定一个具体的 IP 地址。例如:

    net:
      bindIp: 0.0.0.0
    
  • port:指定 MongoDB 服务器监听的端口号。默认情况下,MongoDB 使用 27017 端口。如果您想使用其他的端口,您可以修改这个选项。例如:

    net:
      port: 28017
    
  • security:指定 MongoDB 服务器的安全模式。默认情况下,MongoDB 不启用任何的认证和授权机制,这意味着任何人都可以访问和修改数据库的数据。为了提高 MongoDB 的安全性,您可以启用 authorization 选项,这样 MongoDB 就会要求客户端提供有效的用户名和密码才能访问数据库。例如:

    security:
      authorization: enabled
    
  • storage:指定 MongoDB 服务器的存储引擎和数据目录。默认情况下,MongoDB 使用 wiredTiger 作为存储引擎,它提供了高性能和数据压缩的特性。MongoDB 的数据目录位于 /var/lib/mongo,您可以修改这个选项来指定一个不同的位置。例如:

    storage:
      dbPath: /data/mongo
    

在修改了 MongoDB 的配置文件之后,您需要重启 MongoDB 的服务,以使配置生效。请您可以使用以下的命令来执行这个操作:

sudo systemctl restart mongod

设置初始密码

在启用了 MongoDB 的认证机制之后,您需要创建一个具有管理员权限的用户,以便管理 MongoDB 的数据库和用户。您可以使用以下的步骤来执行这个操作:

  • 首先,您需要使用 mongo 命令来连接到 MongoDB 服务器,不需要提供任何的用户名和密码。例如:

    mongo
    
  • 然后,您需要切换到 admin 数据库,这是 MongoDB 的默认的管理员数据库。您可以使用以下的命令来执行这个操作:

    use admin
    
  • 接下来,您需要使用 db.createUser() 函数来创建一个管理员用户,您需要提供一个用户名,一个密码,以及一个角色。MongoDB 提供了多种预定义的角色,其中 root 角色是最高级别的角色,它可以对所有的数据库和用户进行操作。您可以使用以下的命令来执行这个操作,您可以根据您的需求修改用户名和密码:

    db.createUser({user: "admin", pwd: "admin123", roles: ["root"]})
    
  • 最后,您需要退出 MongoDB 的客户端,您可以使用以下的命令来执行这个操作:

    exit
    

在创建了管理员用户之后,您就可以使用这个用户的用户名和密码来连接到 MongoDB 服务器,并对数据库和用户进行管理。您可以使用以下的命令来执行这个操作,您需要根据您的实际的用户名,密码,IP 地址和端口号来修改参数:

mongo -u admin -p admin123 --authenticationDatabase admin --host 192.168.0.1 --port 28017

验证安装

在完成了 MongoDB 的安装和配置之后,您可以使用一些简单的命令来验证 MongoDB 是否正常运行。以下是一些常用的命令:

  • db.version():显示 MongoDB 的版本号。
  • db.serverStatus():显示 MongoDB 服务器的状态信息,包括内存,连接,操作,复制等方面的指标。
  • db.stats():显示当前数据库的统计信息,包括集合,文档,索引,存储等方面的指标。
  • show dbs:显示所有的数据库的名称和大小。
  • show collections:显示当前数据库的所有集合的名称。
  • db.collection.find():显示当前集合的所有文档的内容。

数据库操作

在验证了 MongoDB 的安装之后,您可以开始对数据库进行一些基本的操作,比如创建,删除,插入,更新,查询,删除等。以下是一些常用的命令:

  • use database:切换到指定的数据库,如果数据库不存在,会自动创建。

  • db.dropDatabase():删除当前数据库,以及其下的所有集合和文档。

  • db.createCollection(name, options):创建一个指定名称的集合,可以提供一些可选的参数,比如 cappedsizemax 等。

  • db.collection.drop():删除当前集合,以及其下的所有文档。

  • db.collection.insert(document)

  • db.collection.insert(document):向当前集合中插入一个或多个文档,文档是一个 JSON 格式的对象,可以包含多个键值对,键是文档的属性,值是文档的数据。例如:

    db.users.insert({name: "Alice", age: 25, email: "[email protected]"})
    db.users.insert([{name: "Bob", age: 30, email: "[email protected]"}, {name: "Charlie", age: 35, email: "[email protected]"}])
    
  • db.collection.update(filter, update, options):更新当前集合中符合条件的一个或多个文档,filter 参数是一个 JSON 格式的对象,用于指定更新的条件,update 参数是一个 JSON 格式的对象,用于指定更新的内容,options 参数是一个 JSON 格式的对象,用于指定更新的选项,比如 multiupsert 等。例如:

    db.users.update({name: "Alice"}, {$set: {age: 26}})
    db.users.update({name: "Alice"}, {$inc: {age: 1}})
    db.users.update({name: "David"}, {$set: {age: 40, email: "[email protected]"}}, {upsert: true})
    db.users.update({}, {$set: {gender: "male"}}, {multi: true})
    
  • db.collection.find(query, projection):查询当前集合中符合条件的文档,query 参数是一个 JSON 格式的对象,用于指定查询的条件,projection 参数是一个 JSON 格式的对象,用于指定查询的结果中包含或排除的字段。例如:

    db.users.find({name: "Alice"})
    db.users.find({age: {$gt: 30}})
    db.users.find({}, {name: 1, email: 1, _id: 0})
    db.users.find({name: {$in: ["Alice", "Bob"]}}, {name: 1, _id: 0})
    
  • db.collection.remove(query, options):删除当前集合中符合条件的一个或多个文档,query 参数是一个 JSON 格式的对象,用于指定删除的条件,options 参数是一个 JSON 格式的对象,用于指定删除的选项,比如 justOne 等。例如:

    db.users.remove({name: "Alice"})
    db.users.remove({age: {$lt: 30}}, {justOne: true})
    db.users.remove({})
    

结论

本文介绍了如何在 Red Hat Linux 8 上安装和配置 MongoDB,以及如何进行基本的数据库操作。MongoDB 是一个强大的文档型数据库,它提供了灵活的数据模型,高性能的存储引擎,以及分布式的架构和高可用性。您可以使用 MongoDB 来存储和处理各种类型的数据,以满足您的业务需求。