作为 SpringBoot 开发者,MySQL 是我们日常开发中最常接触的关系型数据库之一。稳定、轻量、开源的特性让它成为 SpringBoot 项目的标配数据源。但很多开发者,尤其是入门阶段的同学,常会在 MySQL 安装环节踩坑 —— 环境变量配置错误、权限设置不当、端口冲突等问题,都会导致后续 SpringBoot 项目无法正常连接数据库。本文将从开发者视角出发,详细讲解 Windows 和 Linux 两大主流系统下 MySQL 的安装、配置流程,以及与 SpringBoot 的基础适配,帮你彻底搞定 MySQL 安装难题。
目录
- 安装前准备:明确版本与环境要求
- Windows 系统下 MySQL 安装教程(两种方式)2.1 安装包(MSI)一键安装2.2 压缩包(ZIP)手动配置(推荐开发者)
- Linux 系统(CentOS7/8)下 MySQL 安装教程3.1 YUM 源安装(便捷方式)3.2 验证安装与基础配置
- 通用配置:MySQL 基础设置(开发者必备)4.1 修改默认端口与字符集4.2 创建 SpringBoot 专用数据库与用户4.3 开启远程访问(开发 / 测试环境)
- SpringBoot 连接 MySQL 测试
- 常见安装问题排查
- 总结
1. 安装前准备:明确版本与环境要求
在安装前,我们需要先确认 MySQL 版本与开发环境的兼容性,避免因版本不匹配导致 SpringBoot 连接异常:
- 版本选择:推荐安装 MySQL 8.0(稳定版),兼容 SpringBoot 2.0 + 所有版本;若项目基于 SpringBoot 1.x,建议选择 MySQL 5.7(8.0 的认证方式变更可能导致连接失败)。
- 环境要求:
- Windows:Win10/11 64 位系统,至少 2GB 内存,关闭占用 3306 端口的程序(如其他数据库)。
- Linux:CentOS7/8、Ubuntu20.04+,关闭防火墙或开放 3306 端口,确保 root 权限。
- 提前下载:从 MySQL 官方下载页(https://dev.mysql.com/downloads/mysql/)获取对应系统的安装包,优先选择 “Community Server”(社区版,免费)。
2. Windows 系统下 MySQL 安装教程(两种方式)
2.1 安装包(MSI)一键安装
适合新手快速上手,步骤如下:
- 双击下载的 MSI 安装包(如 mysql-installer-community-8.0.36.0.msi),选择 “Custom”(自定义安装),勾选 “MySQL Server 8.0.x”,点击 “Next”。
- 点击 “Execute” 安装依赖,完成后 “Next” 进入配置环节:
- 类型选择 “Development Computer”(开发机),占用资源少,适合本地开发。
- 端口保持默认 3306(若冲突可修改,需记录后续配置)。
- 认证方式选择 “Use Legacy Authentication Method”(兼容 SpringBoot 旧驱动)。
- 设置 root 密码(务必牢记,SpringBoot 连接需用),可添加普通用户(如 dev,密码 123456),分配 “DB Owner” 权限。
- 配置 Windows 服务:勾选 “Start MySQL Server at System Startup”(开机自启),服务名默认 “MySQL80”。
- 点击 “Execute” 完成配置,最后 “Finish” 结束安装。
2.2 压缩包(ZIP)手动配置(推荐开发者)
手动配置更灵活,适合需要自定义路径的开发者:
- 解压 ZIP 包到指定目录(如 D:\mysql-8.0.36),该目录命名为 MYSQL_HOME。
- 配置环境变量:
- 新建系统变量 MYSQL_HOME,值为解压路径(D:\mysql-8.0.36)。
- 在 Path 变量中添加 % MYSQL_HOME%\bin,保存生效。
- 创建配置文件:在 MySQL 根目录下新建 my.ini 文件,写入以下内容(适配 SpringBoot 开发):
ini
[mysqld] # 设置3306端口 port=3306 # 设置mysql的安装目录 basedir=D:\mysql-8.0.36 # 设置mysql数据库的数据的存放目录 datadir=D:\mysql-8.0.36\data # 允许最大连接数 max_connections=200 # 服务端使用的字符集默认为utf8mb4 character-set-server=utf8mb4 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB # 认证方式(兼容旧驱动) default_authentication_plugin=mysql_native_password [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8mb4 - 初始化并启动服务:
- 以管理员身份打开 CMD,执行
mysqld --initialize --console,记录控制台输出的临时密码(如 root@localhost: xxxxxx)。 - 安装服务:
mysqld --install MySQL80(服务名 MySQL80)。 - 启动服务:
net start MySQL80。 - 修改 root 密码:
mysql -u root -p,输入临时密码后执行ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';。
- 以管理员身份打开 CMD,执行
3. Linux 系统(CentOS7/8)下 MySQL 安装教程
3.1 YUM 源安装(便捷方式)
Linux 是生产环境主流,YUM 安装更高效:
- 卸载系统自带的 MariaDB(避免冲突):
bash
运行
rpm -qa | grep mariadb # 查看已安装的MariaDB rpm -e --nodeps mariadb-libs-xxx # 卸载对应包 - 添加 MySQL YUM 源:
bash
运行
wget https://dev.mysql.com/get/mysql80-community-release-el8-3.noarch.rpm rpm -ivh mysql80-community-release-el8-3.noarch.rpm - 安装 MySQL 服务:
bash
运行
yum install -y mysql-community-server - 启动并设置开机自启:
bash
运行
systemctl start mysqld # 启动服务 systemctl enable mysqld # 开机自启 systemctl status mysqld # 查看服务状态 - 获取临时密码并修改:
bash
运行
grep 'temporary password' /var/log/mysqld.log # 查看临时密码 mysql -u root -p # 登录 ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码'; # 修改密码(需包含大小写、数字、特殊字符)
3.2 验证安装与基础配置
执行mysql -V(注意大写 V),若输出 MySQL 版本信息,说明安装成功。Linux 下需关闭防火墙或开放 3306 端口:
bash
运行
# 临时关闭防火墙(开发环境) systemctl stop firewalld # 永久开放3306端口 firewall-cmd --add-port=3306/tcp --permanent firewall-cmd --reload4. 通用配置:MySQL 基础设置(开发者必备)
安装完成后,需做针对性配置,适配 SpringBoot 开发需求:
4.1 修改默认端口与字符集
- 端口修改:编辑 my.ini(Windows)或 /etc/my.cnf(Linux),修改
port=3306为自定义端口(如 3307),重启服务生效。 - 字符集配置:确保
character-set-server=utf8mb4(支持 emoji,适配业务场景),执行show variables like 'character_set_%';验证字符集。
4.2 创建 SpringBoot 专用数据库与用户
避免直接使用 root 用户连接 SpringBoot,降低权限风险:
sql
-- 创建数据库(命名与项目一致,如springboot_demo) CREATE DATABASE IF NOT EXISTS springboot_demo DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- 创建用户(如dev,密码123456) CREATE USER 'dev'@'localhost' IDENTIFIED BY '123456'; -- 授权用户访问指定数据库 GRANT ALL PRIVILEGES ON springboot_demo.* TO 'dev'@'localhost'; -- 刷新权限 FLUSH PRIVILEGES;4.3 开启远程访问(开发 / 测试环境)
本地 SpringBoot 项目连接远程 MySQL 时,需开启远程访问:
sql
-- 修改用户允许远程连接(%表示任意IP) ALTER USER 'dev'@'localhost' IDENTIFIED BY '123456' WITH GRANT OPTION; CREATE USER 'dev'@'%' IDENTIFIED BY '123456'; GRANT ALL PRIVILEGES ON springboot_demo.* TO 'dev'@'%'; FLUSH PRIVILEGES;Linux 下需额外关闭 SELinux(临时:setenforce 0;永久:修改 /etc/selinux/config,设置 SELINUX=disabled)。
5. SpringBoot 连接 MySQL 测试
安装配置完成后,通过 SpringBoot 项目验证连接:
- 创建 SpringBoot 项目,引入依赖(pom.xml):
xml
<dependencies> <!-- SpringBoot Web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- MySQL驱动 --> <dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <scope>runtime</scope> </dependency> <!-- MyBatis-Plus(可选,简化CRUD) --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.3.1</version> </dependency> </dependencies> - 配置 application.yml:
yaml
spring: datasource: url: jdbc:mysql://localhost:3306/springboot_demo?useUnicode=true&characterEncoding=utf8mb4&useSSL=false&serverTimezone=Asia/Shanghai username: dev password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver - 编写测试类:
java
运行
@SpringBootTest public class MysqlConnectionTest { @Autowired private DataSource dataSource; @Test public void testConnection() throws SQLException { Connection connection = dataSource.getConnection(); System.out.println("数据库连接成功:" + connection); connection.close(); } }
运行测试,若控制台输出连接信息,说明 MySQL 与 SpringBoot 适配成功。
6. 常见安装问题排查
- 3306 端口被占用:Windows 执行
netstat -ano | findstr 3306查看占用进程,结束进程或修改 MySQL 端口;Linux 执行lsof -i:3306,杀死对应进程。 - SpringBoot 连接报 “Access denied”:检查用户名 / 密码是否正确,用户是否允许远程访问,MySQL 认证方式是否为 mysql_native_password。
- Linux 启动 MySQL 失败:查看日志
cat /var/log/mysqld.log,常见原因是 SELinux 未关闭、权限不足(执行chown -R mysql:mysql /var/lib/mysql)。 - 字符集乱码:确保数据库、表、字段字符集均为 utf8mb4,SpringBoot 连接 URL 添加
characterEncoding=utf8mb4。
7. 总结
MySQL 的安装是 SpringBoot 开发的基础环节,核心在于 “匹配版本 + 正确配置 + 权限管控”。Windows 下推荐压缩包手动配置,便于自定义;Linux 下优先 YUM 安装,适配生产环境。安装完成后,务必创建专用数据库和用户,开启必要的远程访问,并通过 SpringBoot 项目验证连接,避免后续开发中因环境问题耽误进度。
此外,生产环境中还需注意 MySQL 的性能调优(如调整连接数、缓存大小)、数据备份、主从复制等,但对于入门阶段,掌握本文的安装和基础配置,足以支撑日常 SpringBoot 开发。希望本文能帮你避开安装坑,让 MySQL 成为你 SpringBoot 项目的 “稳定后盾”。
在博文中添加一些常见的安装错误及解决方法
写一篇关于如何在Spring Boot中使用MySQL数据库的教程
推荐一些关于Spring Boot和MySQL的学习资源