现象描述
从 CVM 通过云数据库 MySQL 内网地址连接实例,连接失败。
说明:
连接登录云数据库 MySQL 有多种方式,例如内网连接、外网连接以及云联网连接,不同连接方式所需要的连接条件是不同的,例如,您需要通过外网地址连接云数据库 MySQL,在通过命令连接数据库时,命令行输入的是实例的内网地址,则会连接失败;例如,您购买的是轻量应用服务器,未通过云联网,直接用命令连接云数据库 MySQL,则会连接失败。因此,连接失败时,建议您首先参考 快速入门 > 连接 MySQL 实例 > 概览 中的连接方式和应用场景自查在连接条件上是否使用正确。 原因汇总
可能原因 | 说明 |
| 密码错误。 |
| CVM 与 MySQL 在同一地域内,但属于不同的 VPC 网络。 |
| CVM 与 MySQL 不在同一地域内,属于不同的 VPC 网络。 |
| CVM 安全组配置有误。 |
| MySQL 安全组配置有误。 |
| 数据库账号限制了访问的具体主机地址。 |
| 连接命令有误。 |
| 命令行或配置文件中的 IP 和端口有误。 |
| MySQL 实例磁盘写满,最大连接数打满,timeout 参数设置问题,处于主从切换等。 |
MySQL 实例运行状态 | |
CVM 实例状态 | CVM 实例隔离中或关机中,通过 控制台 恢复或开机。 |
解决思路
1. 通过检查工具诊断原因
云数据库 MySQL 控制台为您提供了 一键连接检查工具,帮助您判断可能导致无法连接的原因,然后根据提示修改后再重新连接实例。 处理步骤
一、通过一键连接检查工具定位原因并进行相应处理
2. 在实例管理页面,选择连接检查 > 内网检查页面。
说明:
判断内外网地址,可在实例详情页的基本信息处查看。
3. 添加访问此 MySQL 实例的 CVM。
4. 添加完成后,单击开始检查,检查任务完成后,会生成检查报告。
5. 根据检查报告,进行问题定位,根据处理建议进行调整后重新进行连接 MySQL。
|
MySQL 实例状态 | 检测到您的 MySQL 实例已销毁,如果您并非有意销毁实例,可通过 回收站 进行恢复。 |
CVM 实例状态 | 检测到您的 CVM 实例已销毁,如果您并非有意销毁实例,可通过 回收站 进行恢复。 |
| 检查到您的 CVM 实例已关机,如您需要继续使用该 CVM 实例,请前往 控制台 启动该 CVM 实例。 |
CVM 与 MySQL 处于同一 VPC | 检测到您的 CVM 与 MySQL 不在同一 VPC 网段,CVM 需要与 MySQL 处于同一地域的同一 VPC 中,请参见 网络问题 修改 VPC。 |
CVM 安全组策略 | 检测到您 CVM 所绑定安全组的出站规则未放通对 IP 端口的访问,请参见 CVM 安全组配置有误 放通出站规则。 |
MySQL 安全组策略 | |
二、若工具检查未能解决问题时,可以参考如下原因检查
密码问题:密码错误
网络问题1:CVM 与 MySQL 在同一地域内,但属于不同的 VPC 网络
默认情况下,CVM 与 MySQL 的网络类型都为 VPC 网络,且两者都位于同一 VPC 网络时,才能直接通过内网互通。如果同地域但位于不同 VPC,可以将 MySQL 迁移到 CVM 所在的 VPC 网络中,使 CVM 和 MySQL 进行互通。操作请参见 切换网络。 网络问题2:CVM 与 MySQL 不在同一地域内,属于不同的 VPC 网络
CVM 和 MySQL 不在同一个地域内,属于不同的 VPC 网络,则 CVM 无法直接通过内网连接 MySQL,建议使用与 MySQL 同一 VPC 的 CVM 进行连接。若在 MySQL 同一个地域内没有 CVM 实例,可以在 CVM 购买页 新建一个与 MySQL 同地域和同 VPC 网络的 CVM 实例。 安全组配置问题1:CVM 安全组配置有误
若想使用 CVM 连接 MySQL,需在 CVM 安全组中配置出站规则,当出站规则的目标配置不为0.0.0.0/0且协议端口不为 ALL 时,需要把 MySQL 的内网 IP 及端口添加到出站规则中。
1. 登录 安全组控制台,单击安全组名,进入 CVM 绑定的安全组详情页。 2. 选择出站规则页,单击添加规则。
“类型”选择MySQL(3306);“目标”填写您 MySQL 的内网 IP 地址(段);“策略”选择允许。
安全组配置问题2:MySQL 安全组配置有误
若想指定的 CVM 连接 MySQL 实例,需要在 MySQL 安全组中配置入站规则,当入站规则的源端配置不为0.0.0.0/0且协议端口不为ALL时,需要把 CVM 的 IP 及端口添加到入站规则中。
1. 登录 安全组控制台,单击安全组名,进入 MySQL 绑定的安全组详情页。 2. 选择入站规则页,单击添加规则。
填写您允许连接的 IP 地址(段)及需要放通的端口信息(MySQL 内网端口),选择允许放通。
“类型”选择MySQL(3306);“来源”填写您 CVM 的内网 IP 地址(段);“策略”选择允许。
账号所授权的主机地址问题:数据库账号限制了访问的具体主机地址
数据库账号除安全组,子网等网络环境限制以外,还会受到 MySQL 自身账号体系的限制。若数据库账号指定了具体主机地址,则其他地址无法连接 MySQL。
您可以通过 MySQL 控制台修改数据库账号所授权的主机地址,来限制对数据库的连接,进而提升数据库的连接安全。
2. 选择数据库管理 > 账号管理页,找到需要修改主机的账号,在操作列选择更多 > 修改主机。
3. 在弹出对话框,输入新主机地址,单击确定即可修改账号所授权的主机地址。
说明:
主机地址支持 IP 形式的地址,也支持填入%(表示不做 IP 范围限制);多个主机以分隔符分隔,分隔符支持换行符、空格和; , |
。
示例1:填入%,表示不做 IP 范围限制,即允许所有 IP 地址的客户端使用该账号连接数据库。
示例2:填入10.5.10.%,表示允许 IP 范围在10.5.10.%内的客户端使用该账号连接数据库。
连接语法问题:连接命令有误
请检查连接命令是否有误,请参考标准的内网连接命令:
mysql -h <内网 ip 地址> -u <用户名,默认 root> -P <端口号,默认3306> -p
<内网 ip 地址>:替换为目标 MySQL 数据库实例的内网地址,在 MySQL 控制台 的实例详情页可查看内网地址。 说明:
MySQL 默认端口为3306。
端口为3306时,<内网 ip 地址>仅需替换为 IP 地址,例如内网地址为10.16.0.11:3306,输入10.16.0.11即可。
<用户名,默认 root>:替换为目标 MySQL 数据库实例的账号名,默认的账号名是 root。
IP 和端口问题:命令行或配置文件中的 IP 和端口有误
通过命令连接登录数据库时,请检查实例的内网 IP 和端口号是否正确,在 MySQL 控制台 的实例详情页可查看内网 IP 和端口号。 MySQL 实例问题:MySQL 实例磁盘写满,最大连接数打满,timeout 参数设置问题,处于主从切换等
若 MySQL 实例的磁盘满了,可能会影响连接数据库,建议对磁盘扩容,操作请参见 调整数据库实例规格。 当出现 “ERROR 1040(00000):Too many connections” 的提示语时,表明云数据库实例当前最大连接数超过了限制。常见原因及解决方案:
i. sleep 线程数很多,建议在控制台调低 wait_timeout 和 interactive_timeout 参数值。操作请参见 设置实例参数。
ii. sleep 线程数很少,也没有慢查询堆积,建议在控制台调大 max_connections 参数值。操作请参见 设置实例参数。 检查 MySQL 实例是否为“主从切换状态”,若连接实例时,MySQL 实例处于主从切换状态,则会连接失败,请等待主从切换完毕后,再重新通过命令连接。
本页内容是否解决了您的问题?