java连接操作mysql的核心是jdbc规范、mysql驱动和安全写法三者协同:需先启动mysql服务并建库建表(如test_db及users表),maven项目引入mysql-connector-j 8.0.33+依赖,url配置usessl=false与servertimezone=asia/shanghai,强制使用preparedstatement防注入,资源用try-with-resources自动关闭,常见问题按服务状态、url、凭据、网络四步排查。

Java 连接和操作 MySQL 的核心,其实就围绕 JDBC 规范 + MySQL 驱动 + 安全写法 三条主线展开。不堆概念、不讲虚的,直接说清楚关键点怎么落地。
MySQL 环境与表结构准备
先确保本地 MySQL 服务已启动(比如端口 3306),再建库建表——这是所有 Java 操作的前提:
- 创建数据库:
CREATE DATABASE IF NOT EXISTS test_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; - 切换并建表:
USE test_db; CREATE TABLE users (id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(50), password VARCHAR(100)); - 确认字符集用
utf8mb4,避免 emoji 或生僻字乱码;AUTO_INCREMENT和PRIMARY KEY是基础约束,别漏
Java 项目接入 MySQL 驱动
驱动版本必须匹配你的 MySQL 实际版本(例如 MySQL 8.0+ 推荐用 mysql-connector-java:8.0.33 或更高):
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
- Maven 项目:在
pom.xml中加依赖,注意 groupId 是mysql,artifactId 是mysql-connector-j(新版已改名,旧版仍可用mysql-connector-java) - 非 Maven 项目:下载对应 JAR 包,手动添加到
lib目录,并在 IDE 中“Add as Library” - MySQL 8.0+ 可省略
Class.forName("com.mysql.cj.jdbc.Driver"),但显式加载更稳妥,尤其在老 JVM 或模块化环境下
JDBC 连接与 SQL 执行要点
连接不是“连上就行”,而是要兼顾可用性、安全性和可维护性:
- URL 示例:
jdbc:mysql://localhost:3306/test_db?useSSL=false&serverTimezone=Asia/Shanghai&characterEncoding=utf8mb4——useSSL=false在本地开发可简化配置,生产环境务必启用 SSL;时区参数防止时间字段错位 - 永远用 PreparedStatement 替代 Statement,防 SQL 注入、支持参数占位、执行效率更高(尤其批量操作)
- 查询后必须显式关闭
ResultSet、Statement、Connection(推荐 try-with-resources 写法),否则容易连接泄漏
常见问题快速定位
报错别慌,按顺序查这四点基本能解决 90% 连接问题:
-
MySQL 服务没开:命令行运行
mysql -u root -p能登录吗?不能就先启动服务 -
URL 地址或端口错:检查 host 是否是
localhost或真实 IP,端口是否被其他程序占用 -
账号密码不对:MySQL 8.0 默认认证插件是
caching_sha2_password,若驱动版本低,可能需在 MySQL 中执行:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_pass'; -
防火墙/网络限制:远程连接时,确认服务器防火墙放行了 3306 端口,且 MySQL 用户授权了对应主机访问(如
'root'@'%')
不复杂但容易忽略。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










