连接至 MongoDB
本页面概述了如何使用 MongoDB Compass 连接 MongoDB 主机。 您可以连接到独立、副本集或分片集群主机。
注意
MongoDB Atlas
如果需要创建 MongoDB 主机,请考虑使用 MongoDB Atlas。Atlas 是云托管数据库服务,无需安装,即可提供免费入门套餐和可复制的 URI,轻松将 Compass 连接部署。
如果您需要安装 Compass,有关说明请参阅下载并安装 Compass。
Considerations
将 Compass 连接副本集时,不建议直接连接单个副本集成员。如果您所连接的成员因选举而从主成员转换为辅助成员,或从辅助成员转换为主成员,Compass 可能会强行关闭连接或显示过时的数据。
相反,要连接到副本集,请在填写连接信息时使用副本集 SRV record 或 Replica Set Name。
从 MongoDB Compass 1.19 开始, Compass 在连接非正版 MongoDB 实例时会显示警告消息, 因为这些实例的行为可能与正版 MongoDB 实例不同;例如 缺失或不完整的特征、不同的特征行为等。
从 1.39.2 版开始,MongoDB Compass 不再支持从 1.31.0 版之前的 传统连接文件进行迁移。传统连接是指一种 存储在磁盘上的内部 Compass 连接选项格式, 1.39.0 版之后不再支持这种格式。
如果收藏夹中保存了旧连接,请在 1.39.0 版本上导出连接,以将其转换为新格式,然后再更新到 1.39.2 版本或更高版本。
连接
如果您的连接名称已经出现在 Compass 窗口的 Connections Sidebar 中,请单击连接名称以连接。
否则,您可以通过以下任一方式连接部署:
提供连接字符串。
指定 Advanced Connection Options 。高级连接选项可以让您指定身份验证、TLS/SSL 以及 SSH 连接选项。要了解更多信息,请参阅高级连接选项。
注意
从版本1.44.0开始, 您可以通过 Compass 同时连接到多个 MongoDB 实例。
提供您的连接字符串
当您提供连接字符串时,Compass 支持 MongoDB 所支持的大多数连接字符串选项。
默认情况下,Compass 的默认 socketTimeoutMS 值为 60000,或 60 秒。如果您在 Compass 中经常遇到超时,请考虑在连接字符串中将此选项设置为更高的值。
有关 Compass 支持的连接字符串选项的完整列表,请参阅 GitHub 上的 Compass 连接自述文件。
粘贴连接字符串。
如果您有可用的部署连接字符串,则可以将该字符串直接粘贴到对话框中。您可以使用标准连接字符串格式或 DNS 种子列表连接格式。
要获取 Atlas 集群的连接字符串:
前往 Atlas Clusters(集群)视图。
点击所需集群的 Connect(连接)。
单击 Connect with MongoDB Compass(连接)。
复制提供的连接字符串。
警告
如果您点击进入 MongoDB Compass 连接表单,编辑连接字符串, 则 Compass 默认以明文显示凭据。
要编辑连接字符串档案而不暴露密码,请使用 Compass 连接表格上的 Advanced Connection Options > Authentication(高级连接选项 > 身份验证)标签页。
要了解如何为未托管在 Atlas 上的部署格式化连接字符串,请参阅连接字符串 URI 格式。
使用高级连接选项
高级连接选项提供了将 Compass 连接到 MongoDB 的其他方法。 高级连接选项允许您指定身份验证、TLS/SSL 和 SSH, 从而安全地连接到部署。
有关如何使用Compass指定连接选项的详细信息,请参阅高级连接选项。
从命令行连接至 Compass
您可以从命令行启动 Compass 会话。
在企业环境中,脚本启动可以使 Compass 部署更加容易。 例如,要限制对敏感系统的访问, 您可以配置命令行启动,使 Compass 可以在跳板机上运行。
要使用命令行连接到Compass ,您可以将连接选项直接包含在连接字符串中或作为命令行参数。
要在连接字符串中指定连接选项,请使用以下格式:
mongodb-compass 'mongodb://username:password@hostname:port/database?ssl=true&replicaSet=myReplicaSet'
有关更多连接字符串选项,请参阅连接字符串选项。
要将连接选项指定为命令行参数,请使用以下格式:
<path/to/compass/executable> <connection string> --username <username> --password <password>
有关更多命令行参数连接选项,请参阅从命令行启动Compass 。
另请参阅:
要了解如何断开部署,请参阅从 MongoDB 断开连接
连接字符串示例
以下示例重点介绍了一些高级连接字符串选项。有关所有连接字符串选项的信息,请参阅连接字符串选项。
TLS 选项
以下连接字符串使用 tls
URI 选项启用 TLS。 tlsCertificateKeyFile
指定客户端证书和私钥的路径。在连接字符串中指定 tlsCertificateKeyFile
是可选的,除非服务器需要客户端证书,或者您正在使用 X.509身份验证。
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@db0.example.com/?directConnection=true&tls=true&tlsCAFile=path/to/rootCA.crt&tlsCertificateKeyFile=path/to/server_certificate.pem
要启用SSL,请使用等效的 ssl=true
选项代替 tls=true
。
X.509 身份验证
以下示例演示了如何使用 authMechanism
连接字符串选项在连接字符串中指定 X.509身份验证:
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@db1.example.com/?authMechanism=MONGODB-X509&tls=true&tlsCertificateKeyFile=/path/to/client_certificate.pem
LDAP
以下示例指定LDAP身份验证。它将 authMechanism
设置为 plain
以指定使用LDAP身份验证机制,并将 authSource
设置为 $external
以指示身份验证数据库为 $external
。
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@db2.example.com/?authMechanism=PLAIN&authSource=$external
Kerberos
以下示例指定Kerberos身份验证。它将 authMechanism
设置为 GSSAPI
以使用Kerberos身份验证机制,并将 authSource
设置为 $external
以指示身份验证数据库为 $external
。
mongodb://myDatabaseUser@db3.example.com/?authMechanism=GSSAPI&authSource=$external
读/写偏好
要在连接字符串中启用读/写入偏好,您可以将 readPreference
选项用于读取偏好,将 w
选项用于写入关注。
以下连接字符串可设置读取和写入偏好。 readPreference=secondary
指定读取操作应定向到副本集的从从节点(secondary node from replica set),而 w=majority
确保写入操作得到大多数副本集成员的确认。
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@db4.example.com/database?readPreference=secondary&w=majority
分析节点
要在连接字符串中指定 analytics
节点类型,请执行以下操作:
将
readPreference
设置为secondary
,以指定读取操作应定向到从节点(secondary node from replica set)。将
readPreferenceTags
设置为nodeType:ANALYTICS
,以确保读取操作专门定向到分析节点。
以下连接字符串演示了如何在连接字符串中指定 analytics
节点类型:
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@db5.example.com/myDatabase?readPreference=secondary&readPreferenceTags=nodeType:ANALYTICS
有关使用分析节点隔离工作负载的更多信息,请参阅使用预定义副本集标签进行查询。