
摘要: 网站连接云数据库 MySQL,推荐走内网:把网站所在的云服务器和数据库放同地域同 VPC,用数据库内网地址在代码里配置连接。本文讲清内网连接的配置方法、连接串写法、连接池设置和连不上的排查,帮你在腾讯云云数据库 MySQL 上建立安全高效的连接。
网站连数据库,内网连接几乎总是比外网连接更优:延迟更低、不走公网更安全、不收公网流量费。前提是网站所在的云服务器和云数据库 MySQL 在同一地域、同一 VPC。这篇讲清怎么配内网连接、代码里连接串怎么写、连接池怎么设,以及连不上时怎么查。
网站连数据库有内网和外网两种走法,优先选内网,原因很实在:
用内网的前提只有一个:网站的云服务器和云数据库 MySQL 必须同地域、同 VPC。创建数据库时选和服务器一样的地域,就是为了这一步。
连接前先确认网络前提。在控制台分别看云服务器和云数据库 MySQL:
如果不一致,内网不通。处理:要么重新在同地域同 VPC 创建,要么通过 VPC 相关网络打通(相对复杂)。个人和小团队最省事的做法是一开始就把它们建在同地域同 VPC。
在云数据库 MySQL 控制台的实例详情页,获取:
这几项就是连接所需的全部信息。
拿到信息后,在网站代码的数据库配置里填好。不同语言写法不同,核心都是「地址 + 端口 + 账号 + 密码 + 库名」。
以 Node.js 为例(示意,以你用的库为准):
const db = mysql.createPool({
host: '内网IP地址', // 云数据库 MySQL 内网地址
port: 3306,
user: '应用账号',
password: '账号密码',
database: '数据库名',
connectionLimit: 10 // 连接池大小
});Python、PHP、Java 等同理,把对应的连接配置填成内网地址即可。关键是 host 填内网地址,不要填外网地址。
一个高频的性能坑:每次请求都新建一个数据库连接、用完就关。建连接是有开销的,高并发下这样会拖垮性能、甚至耗尽连接数。
正确做法是用连接池:程序启动时建立一批连接复用,请求来了从池里取、用完还回去。上面代码里的 connectionLimit 就是连接池大小。连接池大小要和数据库的最大连接数匹配,别设太大把数据库连接数占满。
云数据库 MySQL 还提供数据库代理,带连接池、读写分离等能力,连接压力大时可以用它进一步优化。
内网连不上,按这几项查:
现象 | 可能原因 | 处理 |
|---|---|---|
连接超时 | 不同地域或不同 VPC | 确认同地域同 VPC |
连接被拒绝 | 来源 IP 没被授权 | 数据库账号授权应用服务器内网访问 |
认证失败 | 账号密码错误 | 核对或重置密码 |
地址填错 | 填了外网地址当内网 | 用内网地址 |
连接数满 | 没用连接池/连接泄露 | 用连接池,检查连接是否正常释放 |
内网连接问题最常见的还是「不同地域/VPC」和「账号授权主机地址限制」,优先查这两项。
连接打通后,让它更稳更安全:
想了解云数据库 MySQL 的内网访问、数据库代理、只读实例等能力,可前往产品介绍页了解:https://cloud.tencent.com/product/cdb ;当前有年购特惠,可在腾讯云双十一活动页查看:https://cloud.tencent.com/act/pro/double11-202611
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。