Spring Boot连接MySQL失败求助:无法创建初始连接池
Unable to create initial connections of pool异常 从你的报错信息、配置和MySQL Workbench的服务器状态来看,核心问题是MySQL驱动版本过低,与你的MySQL 8.x服务器不兼容,这是导致连接池初始化失败的主要原因。下面是分步修复方案:
1. 升级MySQL驱动依赖
你当前使用的mysql-connector-java 5.1.27版本完全不支持MySQL 8.x系列,需要替换为兼容的8.x版本。在pom.xml中更新依赖:
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <!-- 推荐使用8.x稳定版,比如8.0.33 --> <version>8.0.33</version> </dependency>
注意:MySQL 8.x的驱动类名已从
com.mysql.jdbc.Driver改为com.mysql.cj.jdbc.Driver,Spring Boot 2.x及以上版本会自动检测驱动类,若你使用的是较老的Spring Boot版本,需手动添加配置:spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
2. 修正数据库连接URL配置
MySQL 8.x强制要求指定时区,还需添加额外参数解决SSL和公钥检索问题,更新application.properties中的URL:
spring.datasource.url = jdbc:mysql://localhost:3306/OnlineBanking?serverTimezone=Asia/Shanghai&useSSL=false&allowPublicKeyRetrieval=true
serverTimezone:设置为你所在时区(如Asia/Shanghai或UTC),避免时区不匹配导致的连接失败useSSL=false:本地开发环境可关闭SSL验证,生产环境按需开启allowPublicKeyRetrieval=true:解决高版本驱动无法获取服务器公钥的问题
3. 验证数据库用户配置
确认你的root用户允许从localhost登录,且密码配置正确(你当前配置密码为空,需确保MySQL的root用户确实启用了空密码登录,或替换为实际密码)。可通过MySQL Workbench执行以下SQL验证权限:
SELECT user, host FROM mysql.user WHERE user='root';
若root对应的host是localhost或%,则符合当前连接配置。
4. 确认MySQL服务状态
虽然你能通过Workbench连接,仍需再次确认MySQL服务处于运行状态:
- Windows:在系统服务列表中查看
MySQL服务状态 - Linux:执行命令
systemctl status mysql检查
完成以上步骤后,重启Spring Boot应用,即可正常初始化连接池并连接数据库。
内容的提问来源于stack exchange,提问作者Boris Dedejski

