You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

迁移网站至AWS EC2与RDS后数据库连接异常求助

问题排查与解决思路

核心问题分析

报错信息java.sql.SQLException: Access denied for user 'username'@'localhost'说明应用实际使用的数据库连接配置并非你修改的admin和RDS端点,而是默认/旧的username和localhost配置,这是关键矛盾点。


1. 确认配置文件是否真正生效

  • 登录EC2实例,找到应用部署目录下的application.properties文件,直接打开检查内容是否和你本地修改的一致,避免打包时遗漏更新配置文件。
  • 查看应用启动日志(比如Spring Boot的控制台日志或日志文件),搜索spring.datasource相关输出,确认实际加载的url、username参数是否与配置一致。如果日志里显示的还是username和localhost,说明配置没被加载。

2. 排查Spring Boot配置优先级覆盖

Spring Boot的配置加载有优先级,外部配置可能覆盖application.properties:

  • 检查EC2实例上是否设置了数据库相关的环境变量,比如SPRING_DATASOURCE_USERNAME、SPRING_DATASOURCE_URL,这些环境变量的优先级高于配置文件。
  • 查看应用启动命令,是否通过命令行参数(比如--spring.datasource.username=username)指定了旧的配置项。

3. 验证RDS的可访问性(排除环境层面问题)

虽然报错指向localhost,但先确认EC2与RDS的网络连通性:

  • 在EC2上执行命令测试RDS连接:
    mysql -h management-system.ctyygqiegjpe.ap-southeast-2.rds.amazonaws.com -u admin -p
    
    输入配置的密码,如果能成功连接,说明RDS本身的权限和网络是正常的;如果连接失败,检查RDS安全组是否允许EC2的IP/安全组访问3306端口,同时检查EC2安全组是否允许出站访问RDS端口。

4. 检查代码中是否存在硬编码配置

  • 全局搜索应用代码中的localhost、username字符串,排查是否有DAO类、自定义数据源配置等地方硬编码了数据库连接信息,而非引用配置文件的变量。
  • 比如某些自定义的DataSource Bean,可能直接写死了连接参数,没有使用@Value或配置绑定。

5. 清理缓存并重启应用

  • 停止应用进程,清理应用的临时文件(如target目录、缓存目录),然后重新启动应用,避免旧配置被缓存。
  • 如果是容器部署,确保重新构建镜像时包含了最新的配置文件,而非使用旧镜像。

内容的提问来源于stack exchange,提问作者Rlohaustralia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 14:46:12