Spring Boot连接MySQL核心三步:加依赖、配地址、建实体;关键点包括使用mysql-connector-j驱动、URL中必须含serverTimezone和allowPublicKeyRetrieval参数、字符集设为utf8mb4、推荐新建专用用户而非root。

Spring Boot 连接 MySQL 数据库,核心就三步:加依赖、配地址、建实体。不复杂,但几个关键点没设对,项目启动就报错——比如驱动类写错、时区没配、密码含特殊字符没转义。
添加正确的 MySQL 驱动依赖
Spring Boot 2.7+ 和 3.x 默认要求使用新版驱动 mysql-connector-j(不是旧版 mysql-connector-java)。Maven 中这样写:
-
com.mysql -
mysql-connector-j -
runtime
如果用 Spring Data JPA,再加一个 starter:
-
org.springframework.boot -
spring-boot-starter-data-jpa
注意:不要手动指定 driver-class-name(除非有兼容性需求),新版驱动会自动注册;若强制写,必须是 com.mysql.cj.jdbc.Driver,旧写法会警告甚至失败。
application.properties 或 application.yml 配置要完整
只写 url、用户名、密码远远不够。常见漏项直接导致连接失败或乱码:
- URL 必须带参数:
?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true(MySQL 8.0+ 必加) - 字符集显式声明:
characterEncoding=utf8mb4,避免 emoji 存储异常 - 用户名密码确保与 MySQL 中创建的一致(推荐新建专用用户,别直接用 root)
示例(properties 格式):
spring.datasource.url=jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&characterEncoding=utf8mb4spring.datasource.username=springuser
spring.datasource.password=YourPass123!
验证连接是否真正生效
光配置完不等于连上了。启动项目后看控制台日志:
- 出现
HikariPool-1 - Starting...和connected to MySQL类似字样,说明数据源初始化成功 - 如果报
Access denied for user,检查用户名密码或 MySQL 用户权限(是否允许 localhost 登录) - 如果报
Unknown system variable 'tx_isolation',大概率是驱动版本和 MySQL 版本不匹配(如 MySQL 8.0 用了 5.x 驱动)
建议写一个简单接口,调用 JdbcTemplate.queryForObject("SELECT 1", Integer.class) 主动查一次,比只看启动日志更可靠。
可选但强烈建议的加固项
开发阶段可以宽松,但上线前务必补上:
- 禁用
spring.jpa.hibernate.ddl-auto=update(生产环境必须设为validate或删掉) - 显式配置 Hikari 连接池参数,比如
maximum-pool-size=20、connection-timeout=30000 - 密码中含
/、@、:等字符时,在 URL 中需 URL 编码(如@→%40)











