在阿里云上部署应用,数据库往往是第一个卡住人的地方。账号密码明明没错,程序却报连接超时、拒绝访问,或者流量一上来就冒出“Too many connections”。这类问题看着简单,原因却常常分散在白名单、内外网地址、账号权限和连接池参数之间。下面按排查时的实际顺序,把阿里云数据库连接这件事理一遍。

先看清请求怎么走到数据库
以 RDS MySQL 为例,一次连接大致要过三关。第一关是网络,请求能不能到达实例;第二关是认证,用户名、密码和来源地址是否匹配;第三关是会话,连接数、超时时间这些资源够不够分。应用侧看到的通常都是同一句“连不上”,所以最好从前往后逐关确认,别一看到报错就去改密码。
第一次用 RDS 的人,很容易忽略实例的两种地址:内网地址和外网地址。同地域、同 VPC 下的 ECS 应该用内网地址,延迟低,也不走公网流量。外网地址主要留给本地开发机或第三方服务,需要先开启公网访问,再把来源 IP 加进白名单。两种地址混着用,是很多“时通时不通”问题的来源。
从零配置连接的五个步骤
下面用一个电商后台项目做例子。
- 确认实例和应用在同一个 VPC。在 RDS 控制台查看实例所属的专有网络,再对照 ECS 的网络配置。两者不在同一个 VPC 时,内网访问一定失败,这时要么配置对等连接,要么把实例迁到目标 VPC。
- 把 ECS 的内网 IP 加入白名单,位置在 RDS 的“数据安全性”设置里。别图省事填 0.0.0.0/0,那等于对全网敞开,线上库不能这么做。
- 为应用单独建账号,只给最小权限。比如建一个 shop_app 账号,只授予 shop 库的 SELECT、INSERT、UPDATE、DELETE。超级账号留给运维,不要写进应用配置。
- 检查连接字符串。JDBC 示例如下:
jdbc:mysql://rm-xxxxxxxx.mysql.rds.aliyuncs.com:3306/shop?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
域名要替换成控制台里显示的真实地址,端口、库名和参数也要和环境对上。字符集这一项容易被忽略,MySQL 的 utf8 存不下 emoji 这类四字节字符,新项目直接用 utf8mb4。
- 用连接池,不要每个请求新建一个连接。生产环境常见的是 HikariCP 或 Druid。
连接池参数,按预算算,不要照搬默认值
连接池配错,是线上事故的常见原因。有个电商项目在大促期间就碰到过:应用扩容到 10 台,每台最大连接数配 50,理论上最多占 500 个连接。可 RDS 该规格的最大连接数只有 400 左右,数据库开始拒绝新请求,接口大面积超时。
团队排查后做了三件事。先按实例规格重新算总预算,单机最大连接数降到 30。然后把 connectionTimeout 设为 3 秒,请求拿不到连接就尽快失败,别一直挂着。最后设置 maxLifetime,比 RDS 的空闲连接回收时间略短,免得应用拿到已经被服务端断开的死连接。
调整后,同样的流量下连接数回到安全线以内,超时也消失了。这个例子说明,连接数并不是越大越好。应用实例数、单机连接数和数据库上限三者要放在一起算。
常见报错怎么查
Communications link failure 或连接超时
多数是网络不通。按顺序看:地址有没有填错,ECS 是否在白名单里,安全组是否放行 3306 端口。在 ECS 上用 telnet 或 nc 测一下端口,几秒钟就能判断问题出在哪一段。
Access denied for user
先看账号和密码。如果账号创建时限定了 Host,来源地址不匹配也会被拒绝。应用迁到新服务器之后还用旧 IP 段,报这个错很常见。
Too many connections
连接数已经顶到上限。除了前面说的连接池调优,还要查连接泄漏,比如获取连接后没有在 finally 或 try-with-resources 里关闭。SHOW PROCESSLIST 能看到当前会话,长时间占着连接的语句一般就在里面。
SSL 相关错误
新版本驱动默认会校验 SSL。如果 RDS 没有配置对应证书,握手就会失败。可以在连接参数里调整 useSSL 或 sslMode 先让服务跑起来,但生产环境建议保留加密连接,并把证书正确导入,而不是长期关掉校验。
日常运维的几个习惯
- 密码定期轮换,通过配置中心或密钥管理服务注入,别硬编码进代码仓库。
- 打开 RDS 的慢日志和连接数监控,设好阈值告警,问题扩大前就能介入。
- 开发、测试、生产用各自的实例和账号,避免误操作碰到线上数据。
- 定期清理白名单,把已经下线的服务器 IP 删掉,免得留下没人管的入口。
小结
阿里云数据库连接问题看着零散,其实大多落在网络、权限、参数三类上。按“先网络、再认证、后会话”的顺序查,多数问题能很快定位。连接参数要结合实例规格和业务流量来算,这一点在前面的电商案例里已经说得很清楚了。