一、背景
无法使用内网连接的场景,可以通过外网连接,需要云数据库 MySQL 已 开启外网。我们建议仅用于开发或辅助管理数据库时通过外网连接数据库。
注意:说明:
| 连接方式 | 应用场景 | 说明 | 是否计费 |
| 内网连接 | CVM 和 MySQL 属于同一个腾讯云主账号,位于同一个地域,处于同一个 VPC 内。具体请参见 场景一。 | 内网网络高速,延迟低。 | 暂不收费 |
| 外网连接 | 无法使用内网连接的场景,可以通过外网连接。具体请参见 场景二。说明:外网连接易受网络影响,如你对网络有较高要求,推荐使用 内网连接 或者 云联网连接。 | 支持第三方应用连接服务。外网地址需手动开启。开启外网地址,会使你的数据库服务暴露在公网上,可能导致数据库被入侵或攻击。适用于开发或辅助管理数据库,不建议正式业务连接使用,因为可能存在不可控因素会导致外网连接不可用(例如 DDOS 攻击、突发大流量访问等)。 | 暂不收费 |
| 云联网连接 | CVM 和 MySQL 处于不同 VPC,或使用轻量应用服务器连接 MySQL。具体请参见 场景三。 | 全网互联。低时延,高速传输。 | 云联网计费说明 |
二、准备工作
·准备好 MySQL 实例,请参见 创建 MySQL 实例。
·准备好 CVM,请参见 自定义配置 Linux 云服务器。
·对 MySQL 实例 开启外网。
·安全组设置,放通内网端口。
注意:说明:
注意:
注意:
三、操作指南
·从云服务器 CVM 外网连接云数据库 MySQL
·从第三方应用外网连接云数据库 MySQL
四、步骤一:登录云服务器 CVM
1. 登录 云服务器控制台,在实例列表中找到目标云服务器,在右侧操作栏中单击登录。
2. 在登录窗口中,选择密码登录,输入云服务器的用户名和密码,并单击登录即可正常登录。如下:
3. 登录成功后,界面如下:
五、步骤二:安装 MySQL 客户端(如之前已在此 CVM 上安装过,则可跳过步骤二)
执行如下命令安装 MySQL 客户端:
yum install mysql
提示 Complete! 说明 MySQL 客户端安装完成。
六、步骤三:使用 CVM 连接云数据库 MySQL
1. 在 CVM 中执行如下命令,登录到 MySQL 数据库实例。
mysql -h <外网 IP 地址> -u <用户名,默认 root> -P <外网端口号> -p
·<外网 IP 地址>:替换为目标 MySQL 数据库实例的外网地址,在 MySQL 控制台 的实例详情页可查看外网地址。若外网地址未开启,请参见 开启外网地址 开启。
·<用户名,默认 root>:替换为目标 MySQL 数据库实例的账号名,默认的账号名是 root。
·<外网端口号>:替换为目标 MySQL 数据库实例的外网端口号,在 MySQL 控制台 的实例详情页可查看外网端口号。
2. 在提示 Enter password:后输入 MySQL 实例的账号对应的密码,如忘记密码可参见 重置密码 进行修改。
本例中提示 mysql> 说明成功登录到 MySQL。
七、从第三方应用外网连接云数据库 MySQL
1. 安装 MySQL Workbench,下载地址请参见 MySQL Workbench 下载页面。
2. 进入下载页面后单击 MySQL Workbench。
3. 跳转页面后在 Windows (x86, 64-bit), MSI Installer 后单击 Downloads。
4. 单击 No thanks, just start my download。
5. 安装完成后打开 MySQL Workbench,在 MySQL Connections 后单击加号添加待连接的实例信息。
6. 在弹出的窗口下,完成如下配置后,单击 OK。
| 参数 | 说明 |
| Connection name | 为此连接命名。 |
| Connection Method | 连接方法,选择 Standard(TCP/IP)。 |
| Hostname | 输入云数据库 MySQL 实例的外网地址。在实例详情页可查询外网地址信息。 |
| Port | 输入云数据库 MySQL 实例的外网端口号。在实例详情页可查询外网地址的端口号。 |
| Username | 输入待连接 MySQL 实例的账号名。 |
| Store in Vault… | 输入待连接 MySQL 实例的账号密码并会保存此密码。 |
7. 返回 MySQL Workbench 首页,单击刚创建的待连接实例信息连接到 MySQL 实例。
8. 成功连接后的界面如下所示。
八、外网连接是否收费?
外网连接免费使用,暂不收费。
九、为什么外网连接需要放通 MySQL 内网端口?
云数据库 MySQL 实例开启外网地址后,是通过腾讯云的后端集群去内网访问数据库的内网端口,做端口映射,然后转发实现外网访问,所以实例的外网地址开启后需要在安全组内放通 MySQL 内网端口给后端的集群连接。
十、外网端口可以修改吗?
不支持修改。
十一、外网连接的安全性怎么样?
开启外网地址,会使你的数据库服务暴露在公网上,可能导致数据库被入侵或攻击,通常建议使用 内网连接数据库。云数据库外网连接适用于开发或辅助管理数据库,不建议正式业务连接使用,因为可能存在不可控因素会导致外网连接不可用(例如 DDOS 攻击、突发大流量访问等)。
十二、开启外网地址后,如何限制指定 IP 进行连接,其他 IP 不可访问?
对主机位的权限限制,可以通过云数据库 MySQL 控制台修改数据库账号所授权的主机地址,来限制对数据库的访问。请参见 修改授权访问的主机地址。
或者你可以考虑使用公网 CLB 的方式做转发,实现外网登录,通过 CLB 这里的安全组策略来做来源限制。请参见 通过 CLB 开启外网服务。
十三、为什么无法开启外网连接?
目前广州、上海、北京、成都、重庆、南京、中国香港、新加坡、首尔、东京、硅谷、弗吉尼亚、法兰克福地域的主实例,支持开启外网连接地址,只读实例支持开启外网连接地址的地域请以控制台为准,如果实例部署在不支持开启外网的地域,则无法开启外网连接。
十四、外网连接错误如何自查?
通过外网地址连接数据库失败的可能原因,通常与账号密码、端口、安全组、网络及实例问题相关,以下分别为你介绍各种场景的自查方法。
1. 登录云服务器 CVM 后,通过命令登录云数据库时反复失败,可检查你用于登录数据库的账号和密码是否存在错误。
在命令行中:mysql -h <外网 IP 地址> -u <用户名,默认 root> -P <外网端口号> -p,用于登录的账号和密码需对应正确,如你使用的是非 root 账号登录,则密码也需要输入对应非 root 账号的密码,在 CVM 界面输入密码时,密码是不会随输入而显示的,需一次性正确输入并按下回车键,若忘记密码,你可以 重置密码 后重试。
2. 检查安全组配置是否合理,是否限制 IP。
在 CVM 安全组中配置出站规则,当出站规则的目标配置不为0.0.0.0/0且协议端口不为 ALL 时,需要把 MySQL 的外网 IP 及端口添加到出站规则中。
在 MySQL 安全组中配置入站规则,当入站规则的源端配置不为0.0.0.0/0且协议端口不为ALL时,需要在入站规则中放通 MySQL 实例的内网端口,默认为3306。
操作请参见 安全组配置问题解决方案。
3. 检查是否为网络问题。
通过外网连接数据库,若网络不稳定,本地网络限制,VPC 绑定 ACL 策略均会导致通过外网连接数据库失败,请切换本地网络,解除相关限制再重试。建议使用 内网连接数据库,更加稳当、低延时。
4. 检查是否存在实例问题。
·若 MySQL 实例的磁盘满了,可能会影响连接数据库,建议对磁盘扩容,操作请参见 调整数据库实例规格。
·当出现 “ERROR 1040(00000):Too many connections” 的提示语时,表明云数据库实例当前最大连接数超过了限制。常见原因及解决方案:
i. sleep 线程数很多,建议在控制台调低 wait_timeout 和 interactive_timeout 参数值。操作请参见 设置实例参数。
ii. sleep 线程数很少,也没有慢查询堆积,建议在控制台调大 max_connections 参数值。操作请参见 设置实例参数。
·检查 MySQL 实例是否为“主从切换状态”,若连接实例时,MySQL 实例处于主从切换状态,则会连接失败,请等待主从切换完毕后,再重新通过命令连接。