tencent cloud

文档反馈

外网连接

最后更新时间:2024-06-20 10:50:19
    本文为您介绍使用云服务器 CVM 或第三方应用通过云数据库 MySQL 外网地址连接数据库的方法。

    背景

    无法使用内网连接的场景,可以通过外网连接,需要云数据库 MySQL 已 开启外网。我们建议仅用于开发或辅助管理数据库时通过外网连接数据库。
    说明:
    目前广州、上海、北京、成都、重庆、南京、中国香港、新加坡、首尔、东京、硅谷、弗吉尼亚、法兰克福地域的主实例,支持开启外网连接地址。只读实例支持开启外网的地域,请以控制台为准。
    为提升数据库外网链路的安全及可靠性,自2024年5月起云数据库 MySQL 采用 CLB 作为外网底层架构,开启外网后您的资源将新增一个 CLB 实例(因开启外网地址而自动创建的负载均衡实例,您可以免费使用),关闭外网地址后,该 CLB 实例将自动删除。您同时可为该 CLB 实例配置监控告警项,具体请参见 开启外网连接地址
    连接方式
    应用场景
    说明
    是否计费
    CVM 和 MySQL 属于同一个腾讯云主账号,位于同一个地域,处于同一个 VPC 内。具体请参见 场景一
    内网网络高速,延迟低。
    暂不收费
    外网连接
    无法使用内网连接的场景,可以通过外网连接。具体请参见 场景二
    说明:
    外网连接易受网络影响,如您对网络有较高要求,推荐使用内网连接或者 云联网连接
    
    支持第三方应用连接服务。
    外网地址需手动开启。
    开启外网地址,会使您的数据库服务暴露在公网上,可能导致数据库被入侵或攻击。
    适用于开发或辅助管理数据库,不建议正式业务连接使用,因为可能存在不可控因素会导致外网连接不可用(例如 DDOS 攻击、突发大流量访问等)。
    暂不收费
    CVM 和 MySQL 处于不同 VPC,或使用轻量应用服务器连接 MySQL。具体请参见 场景三
    全网互联。
    低时延,高速传输。

    准备工作

    准备好 MySQL 实例,请参见 创建 MySQL 实例
    准备好 CVM,请参见 自定义配置 Linux 云服务器
    对 MySQL 实例 开启外网
    
    安全组设置,放通内网端口。
    
    说明:
    外网开启后将受到安全组网络访问策略的控制,配置安全策略时必须放通内网访问端口3306,不确定内网端口可在控制台的实例详情页查看。操作请参见 管理云数据库安全组

    操作指南

    从云服务器 CVM 外网连接云数据库 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 实例处于主从切换状态,则会连接失败,请等待主从切换完毕后,再重新通过命令连接。
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持