mysql迁移后应用连接失败怎么办_mysql连接配置调整

1次阅读

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

mysql迁移后应用连接失败怎么办_mysql连接配置调整

MySQL迁移后应用连接失败,通常不是数据库本身没启动,而是应用端配置没同步更新。重点检查连接地址、端口、账号权限、驱动兼容性这四块。

确认新库的访问地址和端口是否正确

迁移后数据库很可能不在本地(localhost),IP 或域名已变,端口也可能从默认 3306 改为其他值。应用配置里写死的 hostport 必须对应新实例的实际网络信息。

  • 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.xmlbuild.gradle 中的 connector 版本是否 ≥ 8.0.23
  • Tomcat 或老项目若仍用 5.1 驱动,需升级并调整 URL 参数,否则可能出现“Unknown system variable”类报错

检查连接池与超时配置是否适配新环境

新库响应延迟、网络抖动或防火墙策略可能导致连接建立慢,而旧配置的超时时间过短会直接失败。

  • HikariCP 常见调参:connection-timeout(建议 ≥ 30000)、validation-timeoutsocket-timeout
  • 确认 maxLifetime 不超过数据库侧的 wait_timeout(可通过 SHOW VARIABLES LIKE 'wait_timeout'; 查看)
  • 启用连接测试(如 connection-test-query=SELECT 1connection-init-sql)可提前暴露认证或权限问题

不复杂但容易忽略。迁移后别只盯着 dump 和 restore,应用侧的“最后一公里”配置才是关键。

text=ZqhQzanResources