mysql迁移后应用连接失败通常因应用端配置未更新,需重点检查连接地址与端口、账号权限、驱动兼容性、连接池超时设置四方面,并逐一验证。

MySQL迁移后应用连接失败,通常不是数据库本身没启动,而是应用端配置没同步更新。重点检查连接地址、端口、账号权限、驱动兼容性这四块。
确认新库的访问地址和端口是否正确
迁移后数据库很可能不在本地(localhost),IP 或域名已变,端口也可能从默认 3306 改为其他值。应用配置里写死的 host、port 必须对应新实例的实际网络信息。
- 用
mysql -h 新IP -P 新端口 -u 用户名 -p在应用服务器上手动测试连通性 - 注意:如果新库在 Docker 或内网 VPC 中,要确认应用服务器能否路由到该网络
- 云数据库(如阿里云 RDS、腾讯云 CDB)需检查安全组是否放行对应端口和源 IP
检查账号是否在新库中存在且授权正确
旧库导出的 SQL 一般不包含用户和权限语句,迁移后账号往往丢失或权限不足。
- 登录新 MySQL,执行
SELECT user, host FROM mysql.user;确认账号是否存在 - 运行
SHOW GRANTS FOR '用户名'@'host';查看权限,常见缺失的是SELECT/INSERT/UPDATE/DELETE或对目标库的 USAGE 权限 - 补授权示例:
GRANT ALL PRIVILEGES ON `your_db`.* TO 'app_user'@'%'; FLUSH PRIVILEGES;
验证 JDBC URL 和驱动版本兼容性
新版 MySQL(8.0+)默认要求使用 mysql-connector-java 8.0.x,老驱动(5.1.x)可能握手失败或报 Public Key Retrieval is not allowed 错误。
- JDBC URL 示例(MySQL 8.0+):
jdbc:mysql://host:port/db?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true - 若用 Spring Boot,检查
pom.xml或build.gradle中的 connector 版本是否 ≥ 8.0.23 - Tomcat 或老项目若仍用 5.1 驱动,需升级并调整 URL 参数,否则可能出现“Unknown system variable”类报错
检查连接池与超时配置是否适配新环境
新库响应延迟、网络抖动或防火墙策略可能导致连接建立慢,而旧配置的超时时间过短会直接失败。
- HikariCP 常见调参:
connection-timeout(建议 ≥ 30000)、validation-timeout、socket-timeout - 确认
maxLifetime不超过数据库侧的 wait_timeout(可通过SHOW VARIABLES LIKE 'wait_timeout';查看) - 启用连接测试(如
connection-test-query=SELECT 1或connection-init-sql)可提前暴露认证或权限问题
不复杂但容易忽略。迁移后别只盯着 dump 和 restore,应用侧的“最后一公里”配置才是关键。










