You need to enable JavaScript to run this app.
导航

使用 Mongo Shell 通过 SSL 加密连接数据库

最近更新时间2024.02.06 20:15:00

首次发布时间2022.12.12 16:36:08

文档数据库 MongoDB 版提供了 SSL(Secure Sockets Layer)加密服务,您可以提前开启 SSL 加密功能,在使用 Mongo Shell 连接数据库时,通过设置 SSL 加密来提高数据链路的安全性。本文介绍如何使用 MongoDB Shell 通过 SSL 加密连接来访问数据库。

前提条件

  • 实例已开启 SSL 加密功能,详情请参见设置 SSL 加密
  • 如需使用 ECS 访问 MongoDB 实例,需确保已购 ECS 服务器与 MongoDB 实例在同一 VPC 下。ECS 服务器的购买方法,请参见购买云服务器
  • 已将本地服务器或 ECS 实例的 IP 地址加入到 MongoDB 实例的白名单中。详细操作步骤,请参见设置白名单
  • 已在本地或 ECS 实例上安装正确版本的 Mongo Shell 工具:

注意事项

通过私网访问 MongoDB 实例相对较安全,一般无需对数据链路加密。使用 SSL 加密连接会增加 MongoDB 实例的 CPU 使用率,建议仅在有加密需求(例如通过公网连接数据库)时启用 SSL 加密。

操作步骤

本文以 Linux 操作系统(安装在 ECS 实例上)为例,介绍使用 SSL 加密功能来连接数据库的详细操作步骤

  1. 下载 SSL CA 证书,详情请参见设置 SSL 加密

  2. 将解压后的证书文件上传至安装有 Mongo Shell 的本地服务器或 ECS 实例中。
    本文示例中,将 .pem 证书文件上传至 ECS 的 root/mongodbsslca 目录中。

  3. 在安装有 Mongo Shell 的本地服务器或 ECS 实例中,执行以下命令连接 MongoDB 数据库。

    # 若使用的 Mongo Shell 版本小于 4.2,可以使用如下命令:
    mongo --host <host> -u <username> -p --authenticationDatabase <database> --ssl --sslCAFile <sslCAFile_path> --sslAllowInvalidHostnames
    # 若使用的 Mongo Shell 版本大于或等于 4.2,可以使用如下命令:
    mongo --host <host> -u <username> -p --authenticationDatabase <database> --tls --tlsCAFile <sslCAFile_path>  --tlsAllowInvalidHostnames
    
    • 参数说明

      参数说明示例

      <host>

      单个节点的连接地址,包括域名和端口号。支持使用如下节点的连接地址:

      • 副本集实例:实例中的每个节点。
      • 分片集群实例
        • 每个 Mongos 节点。
        • 单个 Shard 分片中的每个节点。
        • 每个 ConfigServer 节点。

      说明

      • MongoDB 分片集群实例默认仅提供了 Mongos 节点的私网地址,如需使用 Shard 分片节点或和 ConfigServer 节点的私网地址,请单独申请。申请方法,请参见申请私网地址
      • 如需通过公网地址连接数据库,需要先申请公网连接地址,详情请参见申请公网连接地址
      • 副本集实例
        • 单节点的私网连接地址
          mongoreplicae9d7d321****0.mongodb.ivolces.com:3717
        • 单节点的公网连接地址
          mongoreplicae9d7d321****0.mongodb.volces.com:3717
      • 分片集群实例
        • 单 Mongos 节点的公网连接地址
          mongoshard75fef301****0.mongodb.volces.com:3717
        • Shard 分片中单节点的公网连接地址
          mongoshard75fef301****s00``.mongodb.volces.com:3717
        • 单 ConfigServer 节点的私网连接地址
          mongoshard75fef301****config0.ivolces.com:3717

      <username>

      需要连接的数据库账号。
      MongoDB 的默认账号为 root。不建议在生产环境中直接使用 root 账号连接数据库。您可以根据业务需求创建账号并分配权限,详情请参见创建账号账号权限

      root

      <database>

      账号所属的数据库。

      说明

      当数据库账号为 root 时,对应的数据库必须为 admin。

      admin

      <sslCAFile_path>SSL CA 证书文件的路径。/root/mongodbsslca/mongoshellshard.pem
    • 命令示例。
      如下示例中以分片集群实例中某 Mongos 节点的公网地址为例,使用 SSL 加密连接来访问数据库。

      mongo --host mongoshard75fef3010****01.mongodb.volces.com:3717 -u root -p --authenticationDatabase admin --tls --tlsCAFile /root/mongodbsslca/mongoshellshard.pem  --tlsAllowInvalidHostnames
      
  4. 当命令行提示 Enter password: 时,输入数据库账号对应的密码并按回车键确认即可。
    若忘记了 root 账号的密码,您可以在 MongoDB 控制台上重置密码。具体操作步骤,请参见重置密码