如何在Ubuntu服务器上安装MongoDB?

概述

  • Ubuntu 是一种基于 Debian 的开源、免费操作系统,由 Canonical Ltd. 和开源社区共同开发和维护。它的名字源自于南非祖鲁语和科萨语中的一种哲学理念,意为“人性”和“我因我们而存在”。
  • MongoDB 是一种开源的文档型数据库管理系统,由 MongoDB, Inc. 维护和开发。它采用了无模式结构(schema-less),数据存储在类似 JSON 的 BSON(Binary JSON)格式中,因此与传统的关系型数据库相比,具有更灵活的数据模型和更高的性能。
  • 使用本教程,学习安装 MongoDB 8.0 Community Edition,方法是使用 apt 软件包管理器在 Ubuntu Linux 的 LTS(长期支持)版本上进行安装。
  • 平台支持

    MongoDB 8.0MongoDB Community Edition支持 x86_64 架构上的以下 64 位 Ubuntu LTS(长期支持)版本:

    • 24.04 LTS (“Noble”)
    • 22.04 LTS (“Jammy”)
    • 20.04 LTS (“Focal”)

    MongoDB 仅支持这些平台的 64 位版本。要确定您的主机当前正在运行的 Ubuntu 版本,请在主机的终端上运行以下命令:

    1
    cat /etc/lsb-release
  • 官方 MongoDB 软件包

    • 要在 Ubuntu 系统上安装 MongoDB Community,以下说明将使用由 MongoDB Inc. 维护和支持的官方 mongodb-org 软件包。官方 mongodb-org 软件包始终包含最新版本的 MongoDB,并且可以从其专用存储库中获取。
    • Ubuntu 提供的 mongodb并不由 MongoDB Inc. 维护,且与官方的 mongodb-org 包冲突。如果您已在您的 Ubuntu 系统上安装了 mongodb 包,则必须先卸载 mongodb 包,才能继续执行这些操作。
  1. 导入公钥

    从终端安装 gnupgcurl(如果尚未安装):

    1
    sudo apt-get install gnupg curl

    要导入 MongoDB 公共 GPG 密钥,请运行以下命令:

    1
    2
    3
    curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | \
    sudo gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg \
    --dearmor
  2. 创建列表文件

    为您的 Ubuntu 版本创建列表文件 /etc/apt/sources.list.d/mongodb-org-8.0.list

    为 Ubuntu 24.04 (Noble) 创建列表文件:

    1
    echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu noble/mongodb-org/8.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list

    为 Ubuntu 22.04 (Jammy) 创建列表文件:

    1
    echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/8.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list

    为 Ubuntu 20.04 (Focal) 创建列表文件:

    1
    echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/8.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list
  3. 重新加载包数据库

    发出以下命令以重新加载本地软件包数据库:

    1
    sudo apt-get update
  4. 安装 MongoDB Community Server

    您可以安装最新稳定版本的 MongoDB 或指定版本的 MongoDB。

    要安装最新的稳定版本,请执行以下命令:

    1
    sudo apt-get install -y mongodb-org

    要安装特定版本,必须单独指定每个组件包以及版本号,如以下示例所示:

    1
    sudo apt-get install -y mongodb-org=8.0.0 mongodb-org-database=8.0.0 mongodb-org-server=8.0.0 mongodb-mongosh=8.0.0 mongodb-org-mongos=8.0.0 mongodb-org-tools=8.0.0

    如果您仅安装 mongodb-org=8.0.0 并且不包含组件包,则无论您指定哪个版本,都将安装每个 MongoDB 包的最新版本。

    可选。虽然您可以指定任意可用版本的 MongoDB,但当有新版本可用时,apt-get 仍会升级这些包。要防止意外升级,可将此包固定到当前安装的版本:

    1
    2
    3
    4
    5
    6
    echo "mongodb-org hold" | sudo dpkg --set-selections
    echo "mongodb-org-database hold" | sudo dpkg --set-selections
    echo "mongodb-org-server hold" | sudo dpkg --set-selections
    echo "mongodb-mongosh hold" | sudo dpkg --set-selections
    echo "mongodb-org-mongos hold" | sudo dpkg --set-selections
    echo "mongodb-org-tools hold" | sudo dpkg --set-selections
  • ulimit 注意事项

    • 大多数类 Unix 操作系统都会限制进程可以使用的系统资源。这些限制可能会对 MongoDB 操作产生负面影响,应该进行调整。有关平台的建议设置,请参阅自管理部署的 UNIX ulimit 设置
    • 如果打开文件数的 ulimit 值低于 64000,MongoDB 会生成初创企业警告。
  • 目录

    • 如果通过软件包管理器安装,则在安装过程中会创建数据目录 /var/lib/mongodb 和日志目录 /var/log/mongodb
    • 默认情况下,MongoDB 使用 mongodb 用户账户运行。如果更改运行 MongoDB 进程的用户,您还必须修改数据和日志目录以赋予该用户访问这些目录的权限。
  • 配置文件

    • MongoDB 官方软件包有一份配置文件 (/etc/mongod.conf)。这些设置(如数据目录和日志目录规范)将在启动时生效。换言之,如果在 MongoDB 实例运行时更改该配置文件,则必须重新启动实例才能使更改生效。
  • 步骤

    • 请按照以下步骤在系统上运行 MongoDB 社区版。 这些说明假定您使用的是官方 mongodb-org 包,而不是由 Ubuntu 提供的非官方 mongodb 包,并且您使用的是默认设置。

    • 初始化系统

      • 要运行和管理 mongod 进程,需使用操作系统内置的初始化系统。较新版本的 Linux 倾向于使用 systemd(它会使用 systemctl 命令),而较旧版本的 Linux 倾向于使用 System V init(它使用 service 命令)。

      • 如果您不确定您的平台使用的是哪个初始化系统,请运行以下 命令:

        1
        ps --no-headers -o comm 1
      • 然后根据结果选择下面合适的标签页:

        • systemd - 选择下方的 systemd (systemctl) 标签页。
        • init - 选择下方的 System V Init (service) 标签页。
        1. 启动 MongoDB。

          您可以通过发出以下命令来启动 mongod 进程:

          1
          sudo systemctl start mongod

          如果收到类似下方的错误(在启动 mongod):

          Failed to start mongod.service: Unit mongod.service not found.

          首先运行以下命令:

          1
          sudo systemctl daemon-reload

          然后再次运行上面的启动命令。

        2. 验证 MongoDB 是否已成功启动。

          1
          sudo systemctl status mongod

          您可以通过选择执行以下命令,来确保 MongoDB 将在系统 重新启动后启动:

          1
          sudo systemctl enable mongod
        3. 停止 MongoDB。

          您可以根据需要,通过发出以下命令来停止 mongod 进程:

          1
          sudo systemctl stop mongod
        4. 重启 MongoDB。

          您可以通过发出以下命令来重启 mongod 进程:

          1
          sudo systemctl restart mongod

          通过观察 /var/log/mongodb/mongod.log 文件中的输出,可以跟踪错误或重要消息的进程状态。

        5. 开始使用 MongoDB。

          在与 mongod 相同的主机上启动 mongosh 会话。您可以在不使用任何命令行选项的情况下运行 mongosh,从而连接在本地主机上运行且默认端口号为 27017 的 mongod

          1
          mongosh

          如需进一步了解使用 mongosh 进行连接(例如连接在其他主机和/或端口上运行的 mongod 实例),请参阅 mongosh 文档。

          为了帮助您开始使用 MongoDB,MongoDB 提供了各种驱动程序版本的入门指南。关于驱动程序文档,请参阅 开始使用 MongoDB 开发。

        1. 启动 MongoDB。

          发出以下命令启动 mongod

          1
          sudo service mongod start
        2. 验证 MongoDB 是否已成功启动。

          验证 mongod 进程是否已成功启动:

          1
          sudo service mongod status

          您还可以在日志文件中查看 mongod 进程的当前状态,默认情况下位于:/var/log/mongodb/mongod.log。正在运行的 mongod 实例将表明它已准备好使用以下行进行连接:

          [initandlisten] waiting for connections on port 27017

        3. 停止 MongoDB。

          您可以根据需要,通过发出以下命令来停止 mongod 进程:

          1
          sudo service mongod stop
        4. 重启 MongoDB。

          发出以下命令重新启动 mongod

          1
          sudo service mongod restart
        5. 开始使用 MongoDB。

          在与 mongod 相同的主机上启动 mongosh 会话。您可以在不使用任何命令行选项的情况下运行 mongosh,从而连接在本地主机上运行且默认端口号为 27017 的 mongod

          1
          mongosh

          如需进一步了解使用 mongosh 进行连接(例如连接在其他主机和/或端口上运行的 mongod 实例),请参阅 mongosh 文档。

          为了帮助您开始使用 MongoDB,MongoDB 提供了各种驱动程序版本的入门指南。关于驱动程序文档,请参阅 开始使用 MongoDB 开发。

要从系统中完全删除 MongoDB,您必须删除 MongoDB 应用程序本身、配置文件以及任何包含 数据和日志的目录。以下部分将指导您完成所需的步骤。

警告:此过程将完全删除 MongoDB、其配置以及所有数据库。此过程不可逆,因此请确保在继续之前备份所有配置和数据。

  1. 停止 MongoDB。

    通过发出以下命令来停止 mongod 进程:

    1
    sudo service mongod stop
  2. 删除包。

    删除您之前安装的所有 MongoDB 包。

    1
    sudo apt-get purge mongodb-org*
  3. 删除数据目录。

    删除 MongoDB 数据库和日志文件。

    1
    2
    sudo rm -r /var/log/mongodb
    sudo rm -r /var/lib/mongodb

设置用户密码

  1. 启动 MongoDB 服务

    确保 MongoDB 服务正在运行,可以使用以下命令启动:

    1
    sudo systemctl start mongod
  2. 连接到 MongoDB shell

    进入 MongoDB shell:

    1
    mongosh
  3. 切换到 admin 数据库

    在 MongoDB shell 中,切换到 admin 数据库:

    1
    use admin
  4. 创建管理员用户

    创建一个具有管理权限的用户:

    1
    2
    3
    4
    5
    db.createUser({
    user: "adminUser",
    pwd: "securePassword",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
    })
  5. 退出 MongoDB shell

    输入 exit 退出 MongoDB shell。

  6. 编辑 MongoDB 配置文件

    启用身份验证,编辑 /etc/mongod.conf 文件。在 security 部分添加或取消注释以下行:

    1
    2
    security:
    authorization: enabled
  7. 重启 MongoDB 服务

    重启服务以应用更改:

    1
    sudo systemctl restart mongod
  8. 使用管理员用户登录

    再次进入 MongoDB shell,使用管理员账号登录:

    1
    mongosh -u "adminUser" -p "securePassword" --authenticationDatabase "admin"
  9. 创建数据库特定用户

    切换到目标数据库,并创建用户:

    1
    2
    3
    4
    5
    6
    use yourDatabase
    db.createUser({
    user: "dbUser",
    pwd: "dbPassword",
    roles: [ { role: "readWrite", db: "yourDatabase" } ]
    })
  10. 验证用户权限

    测试新用户权限,使用以下命令重新连接:

    1
    mongosh -u "dbUser" -p "dbPassword" --authenticationDatabase "yourDatabase"
  • 默认情况下,MongoDB 启动时会将bindIp设置为127.0.0.1 ,绑定到本地主机网络接口。这意味着 mongod 只能接受来自同一计算机上运行的客户端的连接。远程客户端将无法连接到 mongod ,并且 mongod 将无法初始化副本集,除非将此值设置为有效的网络接口。
  • 该值可通过以下任一方式配置:
    • 在 MongoDB 配置文件中使用 bindIp,或
    • 通过命令行参数 --bind_ip
  • 警告:在将实例绑定到可公开访问的 IP 地址之前,必须保护集群免遭未经授权的访问。有关安全建议的完整列表,请参阅自托管部署的安全检查清单。至少应考虑启用身份验证强化网络基础架构。
  • 有关配置 bindIp 的详细信息,请参阅自托管部署中的 IP 绑定。
本文结束 感谢您的阅读
正在加载今日诗词....