从零启动 ruoyi-vue-pro 单体后端:JDK 8、MySQL、Redis 与常见报错排查
本文基于本地
ruoyi-vue-pro单体项目的实际启动过程整理。目标不是"把项目点起来",而是理解启动依赖,并能够定位常见环境问题。
1. 先分清项目版本:单体版不是微服务版
芋道源码常见有两类项目:
text
ruoyi-vue-pro:单体多模块项目
yudao-cloud:微服务项目
两者目录结构相似,但启动方式不同。
当前项目是 ruoyi-vue-pro 单体版,因此本地开发不需要启动:
text
Nacos
Gateway
多个 system / infra 微服务
只需要启动一个 Java 进程:
text
YudaoServerApplication
它会加载当前已启用的模块。默认通常启用 system 和 infra,商城、支付、工作流等模块显示"已禁用"是正常日志,不是启动失败。
2. 本地启动依赖关系
后端启动不是只点击 Java 的 main 方法,而是依赖以下基础设施:
text
YudaoServerApplication
│
├── MySQL:业务数据、用户、角色、菜单、日志等
│
└── Redis:缓存、Token、分布式锁等
因此,正确顺序是:
text
启动 MySQL
→ 创建并导入数据库
→ 启动 Redis
→ 启动 YudaoServerApplication
3. JDK 版本怎么确认?
不要看到新项目就直接使用 JDK 17 或 JDK 21,要先看项目根目录的 pom.xml:
xml
<revision>2026.06-jdk8-SNAPSHOT</revision>
<java.version>1.8</java.version>
因此当前项目应使用:
text
JDK 8
Project SDK:1.8
Language level:8
可以在 PowerShell 验证:
powershell
java -version
javac -version
4. MySQL 配置与数据库初始化
本地数据库连接配置位于:
text
yudao-server/src/main/resources/application-local.yaml
关键配置示例:
yaml
spring:
datasource:
dynamic:
datasource:
master:
url: jdbc:mysql://127.0.0.1:3306/ruoyi-vue-pro-jdk8
username: root
password: ******
注意:url 中的数据库名必须真实存在。
4.1 创建数据库
登录 MySQL:
powershell
mysql -u root -p
然后执行:
sql
CREATE DATABASE `ruoyi-vue-pro-jdk8`
DEFAULT CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
USE `ruoyi-vue-pro-jdk8`;
4.2 导入初始化 SQL
项目 SQL 文件位于:
text
sql/mysql/ruoyi-vue-pro.sql
在 MySQL 客户端执行:
sql
USE `ruoyi-vue-pro-jdk8`;
SOURCE D:/0714Springboot/ruoyi-vue-pro/sql/mysql/ruoyi-vue-pro.sql;
导入完成后验证:
sql
SHOW TABLES;
预期能看到:
text
system_users
system_role
system_menu
infra_api_access_log
5. 常见 MySQL 报错排查
5.1 Unknown database 'ruoyi-vue-pro-jdk8'
含义:后端能连接到 MySQL 服务,但配置中的数据库不存在。
解决:
sql
CREATE DATABASE `ruoyi-vue-pro-jdk8` DEFAULT CHARACTER SET utf8mb4;
USE `ruoyi-vue-pro-jdk8`;
SOURCE D:/0714Springboot/ruoyi-vue-pro/sql/mysql/ruoyi-vue-pro.sql;
5.2 No database selected
含义:执行 SQL 导入前,没有选择目标数据库。
错误示例:
sql
SOURCE D:/0714Springboot/ruoyi-vue-pro/sql/mysql/ruoyi-vue-pro.sql;
正确顺序:
sql
USE `ruoyi-vue-pro-jdk8`;
SOURCE D:/0714Springboot/ruoyi-vue-pro/sql/mysql/ruoyi-vue-pro.sql;
5.3 Communications link failure 或 Connection refused
含义:Java 程序无法连到 MySQL 的 127.0.0.1:3306,通常是 MySQL 未启动。
验证命令:
powershell
Test-NetConnection 127.0.0.1 -Port 3306 -InformationLevel Quiet
输出为 True 才表示端口可用。
6. Redis 为什么是必需的?
项目不仅用 Redis 做普通缓存,还会用它支撑:
text
登录 Token 缓存
字典缓存
分布式锁
限流
验证码等临时数据
默认 Redis 配置同样在 application-local.yaml:
yaml
spring:
redis:
host: 127.0.0.1
port: 6379
database: 0
验证 Redis 端口:
powershell
Test-NetConnection 127.0.0.1 -Port 6379 -InformationLevel Quiet
如果 Redis 未启动,后端通常会出现:
text
Unable to connect to Redis server: 127.0.0.1:6379
Connection refused
这并不是 Java 代码错误,而是基础设施尚未就绪。
7. 最终启动后端
在 IDEA 中运行:
text
cn.iocoder.yudao.server.YudaoServerApplication
默认端口是:
text
48080
当控制台输出"项目启动成功"时,可以访问一个需要登录的接口验证服务:
text
http://127.0.0.1:48080/admin-api/system/auth/get-permission-info
返回 HTTP 401 或"账号未登录"是正常的,它说明:
text
后端服务已启动
→ 请求已经到达 Spring Boot
→ 接口鉴权已经生效
8. 面试怎么讲?
可以这样回答:
我本地启动 ruoyi-vue-pro 单体项目时,先确认项目使用 JDK 8,再启动 MySQL 和 Redis。MySQL 负责用户、权限、日志等持久化数据,Redis 不仅用于缓存,也支撑 Token、验证码和分布式能力。初始化数据库后,启动 YudaoServerApplication 即可加载 system 和 infra 模块。排查启动问题时,我会从异常链最底层判断是数据库连接、数据库不存在,还是 Redis 端口未启动,而不是直接修改 Mapper 或业务代码。
9. 我的复盘
- 能解释单体项目和微服务项目的启动差异。
- 能解释 MySQL、Redis 分别承担什么职责。
- 能根据
Unknown database、No database selected、Connection refused定位问题。 - 能独立完成一次后端启动。
下一篇:ruoyi-vue-pro 后台登录链路:从 AuthController 到 Token、Redis 的完整流程。