从零启动 ruoyi-vue-pro 单体后端:JDK 8、MySQL、Redis 与常见报错排查0720

从零启动 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

它会加载当前已启用的模块。默认通常启用 systeminfra,商城、支付、工作流等模块显示"已禁用"是正常日志,不是启动失败。

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;

含义: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 databaseNo database selectedConnection refused 定位问题。
  • 能独立完成一次后端启动。

下一篇:ruoyi-vue-pro 后台登录链路:从 AuthController 到 Token、Redis 的完整流程

相关推荐
Wang's Blog19 小时前
Java 接入Redis: 服务启动停止与后台运行配置
java·服务器·redis
此时不提桶,更待何时19 小时前
01-04-B-垃圾回收面试与生产事故实战
java·jvm·面试
鹿角片ljp21 小时前
KV Cache 解析
java·算法
dy171721 小时前
vue2树节点刷新后定位到上一节点展开
vue.js
captain37621 小时前
网络原理(9)-数据链路层
java·网络协议·java-ee
惊讶的猫21 小时前
意图识别置信度和检索重排的分数
java
caoerzhong1 天前
仓库管理数字化趋势解读:JeeWMS 开源 Java WMS 视角下的五个演进方向
java·开源
程序员JerrySUN1 天前
Jetson Edge AI 实战01:Nano、Xavier、Orin 怎么选?Jetson 硬件选型详解【视频讲解】
java·数据库·redis·安全·mybatis
‎ദ്ദിᵔ.˛.ᵔ₎1 天前
MySQL 表约束
数据库·mysql