Compass 连接错误
此页面的各部分列出了连接 MongoDB Compass 时常见的错误, 并提供了可能的解决方案。
MongoDB 未在提供的主机和端口上运行
当 Compass 尝试连接到指定主机和端口上的数据库时,连接失败。
可能的原因
此错误通常出现在以下情况下:
您未向 Compass 连接对话框提供主机名,或所提供的主机名无效。
目标服务器拒绝错误端口上的连接。
MongoDB 集群或服务器已关闭,或服务器主机名已更改。
您的防火墙主动拦截与本地网络的连接。
解决方案
此问题的解决方案可能取决于您 MongoDB 环境的配置方式。 选择您 MongoDB 环境的对应标签页以查看潜在的解决方案:
如果您有自托管的 MongoDB 服务器、副本集或集群,请尝试 这些解决方案。
确保 MongoDB 实例正在运行
Compass 必须连接正在运行的 MongoDB 实例。确保您已经 安装 MongoDB,并且正在运行 MongoD 进程。您还应该检查 MongoDB 实例正在运行的端口是否与 Compass Connect 对话框中提供的端口匹配。
所需的配置文件设置:bindIp
如果您最近安装了 MongoDB 数据库服务器但无法与该服务器建立初始连接,请确认您在服务器配置文件中指定了有效的 net.bindIp
设置。
主机名和端口
如果自托管服务器通过 net.bindIp
侦听外部网络,请验证您已在 Compass 连接对话框正确指定 Hostname 和 Port。
MongoDB 服务器已移动或关闭
MongoDB 集群或服务器可能已关闭,或其主机名已更改。 请联系数据库管理员,了解数据库的最新状态。
防火墙
如果您认为防火墙可能会主动阻止与数据库运行端口的连接,请尝试从不同位置(如家庭或网吧网络)进行连接。您还可以访问 http://portquiz.net/,测试与不同端口的连接。
如果要连接 Atlas 集群,请首先按照 Atlas 文档中通过 Compass 连接页面所述的步骤进行操作。该页面上的步骤将有助于确保为 Atlas 优化连接设置。
MongoDB 服务器已移动或关闭
MongoDB 集群或服务器可能已关闭,或其主机名已更改。 请联系数据库管理员,了解数据库的最新状态。
防火墙
如果您认为防火墙可能会主动阻止与数据库的连接,请尝试从不同位置(如家庭或网吧网络)进行连接。
Atlas 集群在 27017 端口上运行。您必须能够访问此端口才能访问集群。要检查您的本地网络是否阻止了与端口 27017 的连接,请访问 http://portquiz.net:27017/。
Atlas IP 白名单不包含您的地址
Atlas 仅允许从项目 IP 白名单中列出的地址连接到集群。确保您已将 IP 地址列入白名单,以便可以连接到集群。
插入文档按钮已禁用且无法修改文档
使用 Compass 时,您可能处于无法执行任何写操作、 只能读取数据的状态。
可能的观察
当您处于这种状态时:
Create Collection 和 Insert Document 按钮处于禁用状态。
您无法修改任何文档。
可能的原因
造成此行为的可能原因有两个:
您已连接到集群的从节点成员,但该成员不支持写入操作。
您使用的是 Compass Readonly 版本,该版本不支持写入操作。
解决方案
检查读取偏好设置
在 Compass 连接对话框中,将 Read Preference 设置为 Primary 。这将确保您连接到集群的主节点,主节点支持写入操作。
检查“Replica Set Name”(副本集名称)
检查 Replica Set Name(副本集名称)是否准确。只有在副本集名称准确时,Compass 才能正确识别主节点。
如果集群托管在 Atlas 中,则您可以通过以下过程, 获取正确的副本集名称:
前往 Atlas Clusters(集群)视图。
点击所需集群的 Connect(连接)。
单击 Connect with MongoDB Compass(连接)。
复制提供的连接字符串。
打开 MongoDB Compass。
单击 Yes(是)可自动填写连接设置。
检查您的 Compass 版本
不支持在 Compass Readonly 版本中执行写入操作。您可以通过打开顶级 Compass 下拉菜单并选择 About MongoDB Compass 来检查 Compass 版本。
要执行写入操作,您必须下载不同版本的 MongoDB Compass。有关 Compass 版本之间差异的更多信息,请参阅 Compass 版本的功能。
与集群分片的连接已关闭
此错误意味着在初始设置完成之前已关闭与您的 MongoDB 集群的连接。
可能的观察
您可能会在 MongoDB Compass 中看到类似以下内容的错误:
connection 3 to cluster0-shard-00-00-a1b2c.mongodb.net:27017 closed
可能的原因
此错误最常见的原因是缺少运行 Compass 的公共 IP 地址的 Atlas IP 白名单条目。
解决方案
确保 Compass 运行的公共 IP 地址包含在 Atlas 项目的 IP 白名单中。
要配置 Atlas 白名单,请执行以下操作:
使用 Atlas 左上角的Context下拉菜单,选择所需的 Atlas 项目。
单击 Security 标签页。
单击 IP Whitelist(IP 白名单)菜单选项。
如果您的 IP 地址不在白名单中,请点击 Add IP Address。
单击 Add Current IP Address(连接)。
单击 Confirm(连接)。
Atlas 会识别白名单中的哪些条目包含您当前的 IP 地址,并在这些地址后面附加 (includes your current IP address) (包括您当前的 IP 地址)。
不是主节点或无法写入从节点
此错误消息表明您已连接到副本集的一个从节点,但未提供正确的副本集名称,并且需要连接到 Read Preference 中的主节点。
解决方案
验证 Atlas 副本集名称
您应该确保在 Compass 连接对话框提供正确的副本集名称。
如果集群托管在 Atlas 中,则您可以通过以下过程, 获取正确的副本集名称:
前往 Atlas Clusters(集群)视图。
点击所需集群的 Connect(连接)。
单击 Connect with MongoDB Compass(连接)。
复制提供的连接字符串。
打开 MongoDB Compass。
单击 Yes(是)可自动填写连接设置。
允许 Compass 连接到从节点
要解决此错误,另一种方法是允许 Compass 连接集群从节点。在连接设置中将 Read Preference 改为 Primary Preferred 或 Secondary Preferred。这样您就可以绕过此错误并进行连接。
注意
连接到从节点集群成员时,您无法创建或修改文档、索引或数据库。 仅当 不需要执行任何写入操作时才使用此解决方案。
身份验证失败
在尝试使用 Compass 连接集群时,您可能会收到 Authentication Failed(身份验证失败)的错误消息。
可能的原因
此错误消息通常由如下五个条件导致:
从复制的连接字符串自动填充连接详细信息后,您的 Password(密码)丢失。为安全起见,Compass 要求您在连接对话框中手动输入密码。
您的 Username(用户名)和/或 Password(密码)不正确。
您还没有为 Atlas 集群配置任何 MongoDB 用户。
您没有选择正确的Authentication方法。
您没有指定正确的 Authentication Database。该设置与 authSource 连接字符串选项相对应。
注意
对于 Atlas 集群,Authentication Database 通常是
admin
。
解决方案
确保您提供了正确的Username和Password 。
确保您要进行身份验证的 MongoDB 用户存在。
验证您的Authentication Database和身份验证机制。
验证 MongoDB 数据库是否支持所选的身份验证机制。
查看 Compass 日志
Compass 日志可以提供有关连接错误的其他信息。您可能会找到更详细的错误消息来帮助诊断问题。有关详细信息,请参阅检索 Compass 日志。