tencent cloud

云数据库 MongoDB

动态与公告
产品动态
公告
新手指引
产品简介
产品概述
产品优势
应用场景
集群架构
产品规格
产品功能
地域和可用区
名词解释
购买指南
计费概述
产品定价
计费公式
欠费说明
备份空间计费
变配计费说明
快速入门
快速创建实例
连接 MongoDB 实例
读写数据库
操作指南
访问管理
管理实例
节点管理
版本升级
网络配置
系统监控
备份与回档
数据库审计
数据安全
SSL 认证
日志管理
数据库管理
多可用区部署
只读灾备
参数配置
回收站
任务管理
诊断优化
数据迁移指引
实践教程
索引优化解决读写性能瓶颈
分片集群 Mongos 负载不均解析及应对方案
分片集群使用注意事项
MongoDB 协议实例读写示例
基于 CVM 连接 MongoDB 进行数据导入导出的方法
3.6版本实例反复创建和删除同名数据库时报错怎么办
无法连接 MongoDB 解决方法
删减分片任务:进度确认与异常排查指南
性能调优
运维开发指南
开发规范
3.2版本分片集群命令支持情况
3.6版本命令支持情况
开发运维
故障处理
慢查询增多
连接数超限
API 文档
History
Introduction
API Category
Making API Requests
Instance APIs
Backup APIs
Account APIs
Other APIs
Task APIs
Introduction
Data Types
Error Codes
SDK 参考
Shell连接示例
PHP 连接示例
Node.js连接示例
Java 连接示例
Python连接示例
Python 读写示例
Go 连接示例
PHP 重连示例
产品性能
测试环境
测试方法
测试结果
常见问题
费用相关问题
功能特性问题
分片集群问题
实例相关问题
回档备份问题
连接相关问题
数据迁移问题
其他常见问题
相关协议
服务等级协议
Terms of Service
词汇表
联系我们
文档云数据库 MongoDB实践教程无法连接 MongoDB 解决方法

无法连接 MongoDB 解决方法

PDF
聚焦模式
字号
最后更新时间: 2024-04-12 14:16:16

场景描述

使用云服务器 CVM 通过自动分配给云数据库的内网地址连接云数据库 MongoDB,具体连接方式,请参见 连接 MongoDB 实例。若连接失败,请参见下表进行排查与解决。

排查与解决

序号
可能原因
排查方法
解决方法
1
云服务器 CVM 和 数据库 MongoDB 内网不互通。
云服务器和数据库不属于同一私有网络内。云服务器与数据库务必在同一账号同一个 VPC 内,或同在基础网络内,内网才能直接互通。
安全组配置错误。
若想使用 CVM 连接 MongoDB,需在 CVM 安全组中配置出站规则,当出站规则的目标配置不为0.0.0.0/0且协议端口不为 ALL 时 ,需要把 MongoDB 的 IP 及端口添加到出站规则中。
若想指定的 CVM 连接 MongoDB 实例,需要在 MongoDB 安全组中配置入站规则,当入站规则的源端配置不为0.0.0.0/0且协议端口不为 ALL时,需要把 CVM 的 IP 及端口添加到入站规则中。
1. 登录 CVM 控制台,在实例列表的实例配置查看 CVM 网络信息。
2. 登录 MongoDB 控制台,在实例列表查看 MongoDB 的网络信息。具体操作,请参见 查看实例详情
3. 比较 CVM 与 MongoDB 是否属于同一网络。
4. 登录 CVM,使用telnet 10.x.x.34 27017 确认 MongoDB 网络端口是否可正常访问。
连接链路不通,如下图所示。

连接链路成功,如下图所示。


如下情况,都可能因网络问题导致连接失败。
云服务器(CVM)采用私有网络(VPC),MongoDB 采用基础网络。建议将 MongoDB 从基础网络切换为 VPC 网络,请参见 切换实例网络
CVM 采用基础网络,MongoDB 采用 VPC。建议将 CVM 从基础网络切换为 VPC 网络,请参见 切换私有网络服务
CVM 与 MongoDB 在同一地域内,但属于不同的 VPC 网络。建议将 MongoDB 迁移到 CVM 所在的 VPC 网络,请参见 切换实例网络。
CVM 与 MongoDB 不在同一地域内,属于不同的 VPC 网络。建议在两个 VPC 网络之间建立 云联网
CVM 与 MongoDB 账号不同,属于不同的 VPC 网络。建议在两个 VPC 网络之间建立 云联网
CVM 安全组配置有误
1. 登录 安全组控制台,在安全组列表中,找到 CVM 所绑定的安全组,单击安全组名,进入 CVM 绑定的安全组详情页。
2. 选择出站规则页签,单击添加规则
类型选择自定义
目标填写您 MongoDB 的 IP 地址(段)。
协议端口填写 MongoDB 内网端口。
策略选择允许
MongoDB 安全组配置有误
1. 登录 安全组控制台,在安全组列表中,找到 MongoDB 实例所绑定的安全组,单击安全组名,进入 MongoDB 绑定的安全组详情页。
2. 选择入站规则页签,单击添加规则。 填写您允许连接的 IP 地址(段)及需要放通的端口信息(MongoDB内网端口),选择允许放通。
类型选择自定义。
来源填写您 CVM 的 IP 地址(段)。
协议端口填写 MongoDB 内网端口。
策略选择允许
2
用户名与密码输入错误。
登录 CVM,连接数据库实例,提示账号密码错误。例如:提示Error: Authentication failed,说明用户名密码输入错误。
登录 MongoDB 控制台,在实例详情页面,选择数据库管理页签,进入 账号管理页面,查看当前数据库所有账号信息,重置密码。具体操作,请参见 账号管理
3
数据库访问密码中包含%、@等特殊字符。
密码中存在%与@特殊字符,驱动或者 MongoShell 等客户端没有自动转义这些特殊字符,引起这些特殊字符与连接串地址冲突,而导致用户名或密码出错。提示 Password cannot properly be URL decoded 或者 Error: Authentication failed错误信息。
将访问密码的特殊字符按照如下转义规则进行处理:
感叹号“!”: 转义为 %21
at “@” : 转义为 %40
警号“#”:转义为 %23
百分号“%”: 转义为 %25
插入号“^” : 转义为 %5e
星号“*”: 转义为 %2a
左括号“(”: 转义为 %28
右括号“)”: 转义为 %29
下划线“_”: 转义为 %5f
例如,如果原始密码为:^%@132121a,则转义后的密码应为:^%25%40132121a
4
Mongoshell 版本过低
登录 CVM,执行mongo --version确认版本信息。
为保障鉴权成功,请安装 Mongo Shell 3.0及以上版本。安装步骤,请参见 官方文档
5
客户端的连接串中,没有正确使用鉴权库。
控制台创建的用户:云数据库 MongoDB 统一使用 admin 库作为登录鉴权的认证数据库,在 URI 中端口后面必须加上“/admin”以指定认证库,通过认证后再切换到具体业务数据库进行读写操作。
命令行创建的用户:直接指定对应的数据库认证即可。例如在 test 库下建立的用户登录时,指定的认证库为 test。
控制台创建的用户:检查客户端程序中配置的连接串是否有包含“/admin”或者 authSource=admin。
命令行创建的用户:请您自行检查连接串中的认证库是否为正确的数据库名称。
登录 MongoDB控制台,在实例详情页面的网络配置区域,默认账号连接请直接复制 URI 形式的连接串。其他账户,请您自行修改为正确的认证库再尝试连接。具体操作,请参见 连接 MongoDB 实例
如果以上方法仍未解决问题,您还可以 在线咨询 联系售后。
6
存在阻塞其他请求的操作。若在业务繁忙时段,进行了前台建索引操作(background 选项的值为 false )。该操作将阻塞其他的所有操作,导致请求被锁住,直到前台完成索引创建。具体创建索引的方式,请参见 MongoDB 官网
业务侧自行排查索引创建的方式。
采用后台方式建索引。但后台建索引方式也是有代价的,可能会导致索引创建时间变长。具体创建索引的选项,请参见 MongoDB 官网。同时,可通过 currentOp 命令来查看当前创建索引的进度,具体的命令如下:
db.currentOp( { $or: [ { op: "command", "query.createIndexes": { $exists: true } }, { op: "insert", ns: /\\.system\\.indexes\\b/ } ] } )
7
检查客户连接数是否已经达到上限。每个实例都有连接数上限的限制,超过限制,则无法连接。
登录 MongoDB控制台 ,在数据库管理页面,选择连接数管理页签,查看实例最大连接数实时连接数连接使用率。具体操作,请参见 连接数管理
连接使用率偏高解决方法,请参见 连接使用率偏高异常分析
注意:
在官网控制台创建的用户其认证库均为 admin,因此用户登录时需要制定认证库为 admin。用命令行创建的用户,例如在 test 库下建立的用户登录时指定的认证库为 test。


帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈