
文章目录
-
- [数据库与缓存环境搭建完全指南:MySQL 8.0 + Redis](#数据库与缓存环境搭建完全指南:MySQL 8.0 + Redis)
- [------ 手把手教你安装配置数据库、导入初始数据并启动Spring Boot应用](#—— 手把手教你安装配置数据库、导入初始数据并启动Spring Boot应用)
- [📖 写在前面](#📖 写在前面)
- 第一章:理解项目的数据库依赖
-
- [1.1 查看项目配置文件](#1.1 查看项目配置文件)
- [1.2 为什么需要MySQL和Redis?](#1.2 为什么需要MySQL和Redis?)
- [第二章:MySQL 8.0 安装 ------ 方式一:压缩包手动安装](#第二章:MySQL 8.0 安装 —— 方式一:压缩包手动安装)
-
- [2.1 下载MySQL 8.0(ARM64版本)](#2.1 下载MySQL 8.0(ARM64版本))
- [2.2 解压并安装到用户目录](#2.2 解压并安装到用户目录)
- [2.3 MySQL目录结构详解](#2.3 MySQL目录结构详解)
- [2.4 初始化MySQL数据目录](#2.4 初始化MySQL数据目录)
- [2.5 启动MySQL服务](#2.5 启动MySQL服务)
-
- 前台启动(用于调试)
- 后台启动(推荐,日常使用)
- [设置开机自启动(Mac Launch Agent)](#设置开机自启动(Mac Launch Agent))
- [2.6 连接MySQL并设置root密码](#2.6 连接MySQL并设置root密码)
- [第三章:MySQL 8.0 安装 ------ 方式二:DMG图形化安装](#第三章:MySQL 8.0 安装 —— 方式二:DMG图形化安装)
-
- [3.1 下载DMG安装包](#3.1 下载DMG安装包)
- [3.2 安装DMG](#3.2 安装DMG)
- [3.3 启动和停止MySQL(DMG方式)](#3.3 启动和停止MySQL(DMG方式))
- [3.4 连接到MySQL(DMG方式)](#3.4 连接到MySQL(DMG方式))
- [3.5 两种安装方式对比](#3.5 两种安装方式对比)
- 第四章:创建数据库并导入初始数据
-
- [4.1 创建项目数据库](#4.1 创建项目数据库)
- [4.2 导入项目初始化SQL脚本](#4.2 导入项目初始化SQL脚本)
- [4.3 SQL导入常见问题排查](#4.3 SQL导入常见问题排查)
-
- [问题1:`ERROR 1046 (3D000): No database selected`](#问题1:
ERROR 1046 (3D000): No database selected) - [问题2:`ERROR 1064 (42000): You have an error in your SQL syntax`](#问题2:
ERROR 1064 (42000): You have an error in your SQL syntax) - [问题3:`ERROR 2002 (HY000): Can't connect to local MySQL server through socket`](#问题3:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket) - [问题4:`ERROR 1118 (42000): Row size too large`](#问题4:
ERROR 1118 (42000): Row size too large)
- [问题1:`ERROR 1046 (3D000): No database selected`](#问题1:
- [4.4 创建MySQL配置文件(my.cnf)](#4.4 创建MySQL配置文件(my.cnf))
- 第五章:Redis安装与配置
-
- [5.1 Redis是什么?](#5.1 Redis是什么?)
- [5.2 方式一:使用Homebrew安装(最推荐)](#5.2 方式一:使用Homebrew安装(最推荐))
- [5.3 方式二:源码编译安装(更灵活)](#5.3 方式二:源码编译安装(更灵活))
- [5.4 启动Redis](#5.4 启动Redis)
- [5.5 验证Redis运行](#5.5 验证Redis运行)
- [5.6 Redis基本操作测试](#5.6 Redis基本操作测试)
- [第六章:Spring Boot应用启动](#第六章:Spring Boot应用启动)
-
- [6.1 环境检查清单](#6.1 环境检查清单)
- [6.2 启动Spring Boot应用](#6.2 启动Spring Boot应用)
- [6.3 启动参数详解](#6.3 启动参数详解)
- [6.4 启动成功标志](#6.4 启动成功标志)
- [6.5 验证应用功能](#6.5 验证应用功能)
- 第七章:启动问题深度排查
-
- [7.1 数据库连接失败](#7.1 数据库连接失败)
-
- [错误:`Communications link failure`](#错误:
Communications link failure) - [错误:`Access denied for user 'root'@'localhost'`](#错误:
Access denied for user 'root'@'localhost') - [错误:`Unknown database 'openerp'`](#错误:
Unknown database 'openerp')
- [错误:`Communications link failure`](#错误:
- [7.2 Redis连接失败](#7.2 Redis连接失败)
-
- [错误:`Connection refused: localhost/127.0.0.1:6379`](#错误:
Connection refused: localhost/127.0.0.1:6379) - [错误:`NOAUTH Authentication required`](#错误:
NOAUTH Authentication required)
- [错误:`Connection refused: localhost/127.0.0.1:6379`](#错误:
- [7.3 端口冲突问题](#7.3 端口冲突问题)
数据库与缓存环境搭建完全指南:MySQL 8.0 + Redis
------ 手把手教你安装配置数据库、导入初始数据并启动Spring Boot应用
📖 写在前面
在上一篇中,我们已经成功配置了JDK 17和Maven 3.9.8,并成功编译打包了项目。然而,当你满怀期待地执行 java -jar target/openerp-backend-1.0.0.jar 时,迎接你的却是:
Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago.
Connection refused (Connection refused)
这个错误意味着:你的应用需要连接MySQL数据库,但MySQL服务没有运行或根本没有安装。
本文将极其详细地讲解如何在macOS(ARM64架构)上:
- 安装MySQL 8.0(两种方式:压缩包手动安装 + DMG图形化安装)
- 初始化MySQL数据目录并设置root密码
- 创建项目数据库并导入初始化SQL脚本
- 安装Redis并配置为服务
- 最终成功启动Spring Boot应用
第一章:理解项目的数据库依赖
1.1 查看项目配置文件
在启动应用之前,先了解项目需要什么。
bash
# 进入项目目录
cd ~/Desktop/FeiChenERP/backend
# 查看Spring Boot配置文件
cat src/main/resources/application.yml
# 或
cat src/main/resources/application.properties
典型的数据库配置如下:
yaml
spring:
datasource:
url: jdbc:mysql://localhost:3306/openerp?useSSL=false&serverTimezone=Asia/Shanghai&characterEncoding=utf-8
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
redis:
host: localhost
port: 6379
database: 0
解读:
- 数据库 :MySQL,地址
localhost:3306 - 数据库名 :
openerp - 用户名/密码 :
root/123456 - 缓存 :Redis,地址
localhost:6379
如果配置文件中密码不同(如空密码或 password: 123456),下文会统一设置为 123456。
1.2 为什么需要MySQL和Redis?
| 组件 | 作用 | 本项目使用场景 |
|---|---|---|
| MySQL | 关系型数据库,持久化存储 | 存储ERP系统的核心业务数据:用户、订单、商品、库存等 |
| Redis | 内存数据库/缓存 | 存储会话信息、缓存热点数据、分布式锁等 |
如果MySQL未安装,应用完全无法启动;如果Redis未安装,虽然能启动但部分功能(如缓存、登录状态)会报错。
第二章:MySQL 8.0 安装 ------ 方式一:压缩包手动安装
这是最灵活的方式,适合喜欢掌控一切细节的开发者。
2.1 下载MySQL 8.0(ARM64版本)
确定下载链接
MySQL官方为ARM64 Mac提供了专用版本。截至本文撰写时,推荐版本为 8.0.36。
bash
# 创建临时下载目录
mkdir -p /tmp/mysql-install
# 下载MySQL 8.0.36 ARM64版本(约400MB)
curl -L -o /tmp/mysql-install/mysql-8.0.36-macos14-arm64.tar.gz \
"https://cdn.mysql.com/archives/mysql-8.0/mysql-8.0.36-macos14-arm64.tar.gz"
下载速度慢怎么办?
| 解决方案 | 操作方法 |
|---|---|
| 使用代理 | export https_proxy=http://127.0.0.1:7890 |
| 使用浏览器下载 | 访问 https://dev.mysql.com/downloads/mysql/ |
| 使用国内镜像 | 华为云、腾讯云可能有缓存镜像 |
| 使用wget | wget -c <链接> 支持断点续传 |
验证下载文件完整性
bash
# 查看文件大小(应约400MB)
ls -lh /tmp/mysql-install/mysql-8.0.36-macos14-arm64.tar.gz
# 查看文件类型
file /tmp/mysql-install/mysql-8.0.36-macos14-arm64.tar.gz
# 应输出: gzip compressed data
2.2 解压并安装到用户目录
bash
# 创建MySQL安装目录
mkdir -p ~/mysql
# 解压到目标目录(--strip-components=1 去除顶层目录)
tar -xzf /tmp/mysql-install/mysql-8.0.36-macos14-arm64.tar.gz \
-C ~/mysql --strip-components=1
# 查看解压结果
ls -la ~/mysql/
# 应看到: bin/ docs/ include/ lib/ man/ share/ support-files/ LICENSE README
2.3 MySQL目录结构详解
~/mysql/
├── bin/ # 可执行文件目录(最重要)
│ ├── mysql # MySQL客户端
│ ├── mysqld # MySQL服务器守护进程(核心)
│ ├── mysqld_safe # 服务器启动脚本
│ ├── mysqladmin # 管理工具
│ ├── mysql_secure_installation # 安全配置脚本
│ └── ... (其他工具)
├── docs/ # 文档
├── include/ # 头文件(供C/C++开发使用)
├── lib/ # 库文件
├── man/ # 手册页
├── share/ # 共享资源(字符集、错误信息等)
└── support-files/ # 辅助文件(my-default.cnf等)
为什么安装在
~/mysql而不是/usr/local/mysql?用户目录安装不需要
sudo权限,卸载时直接删除文件夹,完全隔离不会影响系统其他部分。
2.4 初始化MySQL数据目录
在启动MySQL之前,必须初始化数据目录(data directory),MySQL会在其中存储所有数据库文件。
bash
cd ~/mysql
# 执行初始化(--initialize-insecure 表示root密码为空)
bin/mysqld --initialize-insecure \
--datadir=./data \
--basedir=.
# 观察输出
# [Warning] [MY-010915] [Server] 'NO_ZERO_DATE'...
# [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
# [System] [MY-013169] [Server] /Users/xxx/mysql/bin/mysqld (mysqld 8.0.36) initializing...
# 如果看到 [System] [MY-010116] [Server] /Users/xxx/mysql/bin/mysqld (mysqld 8.0.36) started,表示初始化成功
参数解释:
| 参数 | 含义 | 说明 |
|---|---|---|
--initialize-insecure |
初始化且不设置密码 | root用户密码为空,稍后手动设置 |
--datadir=./data |
数据目录位置 | 所有数据库文件将存储在此 |
--basedir=. |
MySQL基目录 | 指向MySQL安装根目录 |
初始化后生成的文件:
bash
ls -la ~/mysql/data/
# 输出示例:
# auto.cnf # 服务器UUID
# ca-key.pem # SSL密钥
# ca.pem # SSL证书
# client-cert.pem # 客户端证书
# client-key.pem # 客户端密钥
# ib_buffer_pool # InnoDB缓冲池信息
# ibdata1 # InnoDB系统表空间(初始约12MB)
# ib_logfile0 # InnoDB重做日志
# ib_logfile1 # InnoDB重做日志
# mysql/ # mysql系统数据库
# performance_schema/ # 性能监控数据库
# private_key.pem # 私钥
# public_key.pem # 公钥
# server-cert.pem # 服务器证书
# server-key.pem # 服务器密钥
# sys/ # sys系统数据库
# undo_001 # Undo日志
# undo_002 # Undo日志
2.5 启动MySQL服务
前台启动(用于调试)
bash
cd ~/mysql
bin/mysqld --datadir=./data --basedir=. --port=3306
这会保持终端在前台运行,所有日志直接输出到终端。按 Ctrl+C 可停止服务。
后台启动(推荐,日常使用)
bash
cd ~/mysql
bin/mysqld --datadir=./data --basedir=. --port=3306 &
# 查看进程是否启动
ps aux | grep mysqld | grep -v grep
# 查看端口是否监听
lsof -i :3306
# 输出示例:
# COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
# mysqld 12345 xxx 38u IPv6 0x1234567890 0t0 TCP *:mysql (LISTEN)
设置开机自启动(Mac Launch Agent)
创建启动配置文件:
bash
# 创建Launch Agent配置文件
cat > ~/Library/LaunchAgents/com.mysql.mysqld.plist << 'EOF'
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.mysql.mysqld</string>
<key>ProgramArguments</key>
<array>
<string>/Users/xxx/mysql/bin/mysqld</string>
<string>--datadir=/Users/xxx/mysql/data</string>
<string>--basedir=/Users/xxx/mysql</string>
<string>--port=3306</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>StandardErrorPath</key>
<string>/Users/xxx/mysql/data/error.log</string>
</dict>
</plist>
EOF
# 注意:将 xxx 替换为你的用户名
# 加载配置
launchctl load ~/Library/LaunchAgents/com.mysql.mysqld.plist
# 启动服务
launchctl start com.mysql.mysqld
注意:如果不想设置开机自启动,每次手动执行后台启动命令即可。
2.6 连接MySQL并设置root密码
连接到MySQL
由于初始化时使用了 --initialize-insecure,root用户密码为空,可以直接连接:
bash
cd ~/mysql
# 使用socket文件连接(避免网络问题)
bin/mysql -u root -S /tmp/mysql.sock
# 或者使用TCP连接
bin/mysql -u root -h 127.0.0.1 -P 3306
如果连接成功,会看到MySQL提示符:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.36 MySQL Community Server - GPL
Copyright (c) 2000, 2024, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
设置root密码为 123456
在MySQL命令行中执行:
sql
-- 切换到mysql系统数据库
USE mysql;
-- 查看当前用户认证方式(确认是caching_sha2_password)
SELECT user, host, plugin FROM user WHERE user='root';
-- 设置密码(MySQL 8.0使用ALTER USER语法)
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
-- 如果有远程访问需求(开发环境不建议)
-- ALTER USER 'root'@'%' IDENTIFIED BY '123456';
-- 刷新权限表使生效
FLUSH PRIVILEGES;
-- 退出
EXIT;
密码策略说明:
MySQL 8.0默认有密码复杂度要求:
- 最小长度:8个字符(如果启用validate_password插件)
- 需要包含大小写字母、数字、特殊字符
如果遇到 ERROR 1819 (HY000): Your password does not satisfy the current policy requirements 错误:
sql
-- 查看当前密码策略
SHOW VARIABLES LIKE 'validate_password%';
-- 临时降低策略(仅开发环境)
SET GLOBAL validate_password.policy = LOW;
SET GLOBAL validate_password.length = 6;
-- 然后重新设置密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
验证密码设置成功
bash
cd ~/mysql
# 使用新密码连接
bin/mysql -u root -p123456 -S /tmp/mysql.sock
# 如果成功进入,说明密码设置正确
mysql>
第三章:MySQL 8.0 安装 ------ 方式二:DMG图形化安装
如果你更喜欢图形化界面,或者不想处理命令行细节,可以选择DMG安装方式。
3.1 下载DMG安装包
- 打开浏览器,访问:https://dev.mysql.com/downloads/mysql/
- 在 "Select Operating System" 下拉菜单中选择:
macOS - 在 "Select OS Version" 中选择:
macOS 14 (x86, 64-bit)或macOS 14 (ARM, 64-bit)- M1/M2/M3芯片:选择 ARM 版本
- Intel芯片:选择 x86 版本
- 点击
Download按钮(约400MB) - 如果提示注册Oracle账号,选择 "No thanks, just start my download."
3.2 安装DMG
- 双击下载的
.dmg文件,挂载磁盘映像 - 双击
.pkg安装包开始安装 - 按照安装向导操作:
- 点击 "Continue"
- 同意许可证协议
- 选择安装类型(默认即可)
- 选择安装位置(默认)
- 配置MySQL:
- Use Strong Password Encryption(推荐,使用caching_sha2_password)
- 设置root密码(设置为
123456以匹配项目配置) - 可以勾选 "Start MySQL Server after installation"
- 点击 "Finish" 完成安装
3.3 启动和停止MySQL(DMG方式)
DMG安装方式会在系统偏好设置中添加MySQL管理面板:
- 打开
系统偏好设置→ 底部找到MySQL - 可以看到MySQL服务状态
- 点击
Start MySQL Server启动 - 点击
Stop MySQL Server停止 - 勾选
Automatically Start MySQL Server on Startup设置开机自启动
命令行控制:
bash
# 启动
sudo /usr/local/mysql/support-files/mysql.server start
# 停止
sudo /usr/local/mysql/support-files/mysql.server stop
# 查看状态
sudo /usr/local/mysql/support-files/mysql.server status
3.4 连接到MySQL(DMG方式)
DMG安装后,MySQL可执行文件在 /usr/local/mysql/bin/:
bash
# 添加到PATH(临时)
export PATH=/usr/local/mysql/bin:$PATH
# 或永久添加到 ~/.zshrc
echo 'export PATH=/usr/local/mysql/bin:$PATH' >> ~/.zshrc
source ~/.zshrc
# 连接MySQL
mysql -u root -p
# 输入刚才设置的密码(123456)
3.5 两种安装方式对比
| 对比项 | 压缩包方式(~/mysql) | DMG方式(/usr/local/mysql) |
|---|---|---|
| 安装路径 | 用户目录 | 系统目录 |
| 需要sudo | ❌ 不需要 | ✅ 需要 |
| 卸载方式 | 直接删除文件夹 | 运行卸载脚本 |
| 图形化管理 | ❌ 无 | ✅ 系统偏好设置面板 |
| 开机自启动 | 需要手动配置Launch Agent | ✅ 可勾选自动启动 |
| 灵活性 | ✅ 高,可多版本共存 | ❌ 较低 |
| 推荐场景 | 开发环境、多版本管理 | 正式环境、偏好图形化 |
本文后续操作以压缩包方式为例,但SQL命令和步骤对两种方式完全通用。
第四章:创建数据库并导入初始数据
4.1 创建项目数据库
bash
cd ~/mysql
# 使用mysql客户端连接(已设置密码)
bin/mysql -u root -p123456 -S /tmp/mysql.sock
# 在MySQL提示符中执行
CREATE DATABASE IF NOT EXISTS openerp
DEFAULT CHARACTER SET utf8mb4
DEFAULT COLLATE utf8mb4_unicode_ci;
-- 验证数据库已创建
SHOW DATABASES;
-- 应看到 openerp 在列表中
-- 查看字符集设置
SELECT default_character_set_name, default_collation_name
FROM information_schema.SCHEMATA
WHERE schema_name = 'openerp';
-- 退出
EXIT;
字符集说明:
| 字符集 | 说明 | 为什么用utf8mb4? |
|---|---|---|
utf8 |
MySQL的utf8实现,最多3字节 | 不支持emoji和部分中文字符(如𠮷) |
utf8mb4 |
真正的UTF-8,最多4字节 | ✅ 支持全部Unicode字符,推荐使用 |
4.2 导入项目初始化SQL脚本
bash
# 确认SQL文件存在
ls -la ~/Desktop/FeiChenERP/sql/init.sql
# 查看SQL文件内容(了解会创建哪些表)
head -50 ~/Desktop/FeiChenERP/sql/init.sql
# 导入数据
bin/mysql -u root -p123456 openerp < ~/Desktop/FeiChenERP/sql/init.sql
# 观察导入过程(终端会显示执行信息)
# 如果SQL文件较大,可能需要几秒到几十秒
导入验证:
bash
# 连接数据库
bin/mysql -u root -p123456 openerp -S /tmp/mysql.sock
# 查看所有表
SHOW TABLES;
# 应看到类似:user, role, menu, product, order, inventory 等表
# 查看表数量
SELECT COUNT(*) FROM information_schema.TABLES
WHERE table_schema = 'openerp';
# 查看某张表的数据量(例如用户表)
SELECT COUNT(*) FROM user; -- 或使用实际的表名
# 退出
EXIT;
4.3 SQL导入常见问题排查
问题1:ERROR 1046 (3D000): No database selected
原因:没有指定目标数据库。
解决:
bash
# 方式一:命令行指定数据库
bin/mysql -u root -p123456 openerp < init.sql
# 方式二:在SQL文件开头添加 USE openerp;
问题2:ERROR 1064 (42000): You have an error in your SQL syntax
原因:SQL文件语法问题,可能与MySQL版本不兼容。
解决:
bash
# 查看MySQL版本
bin/mysql --version
# 检查SQL文件中的语法,常见问题:
# - 使用过时的TYPE=InnoDB → 应使用 ENGINE=InnoDB
# - 使用过时的DEFAULT CHARSET=latin1 → 应使用 utf8mb4
# - 使用MySQL 5.x特有的语法
# 使用兼容模式导入
bin/mysql -u root -p123456 --compatible=mysql40 openerp < init.sql
问题3:ERROR 2002 (HY000): Can't connect to local MySQL server through socket
原因:MySQL未启动或socket文件位置不对。
解决:
bash
# 检查MySQL是否运行
ps aux | grep mysqld
# 如果未启动,重新启动
cd ~/mysql && bin/mysqld --datadir=./data --basedir=. --port=3306 &
# 指定socket文件
bin/mysql -u root -p123456 -S /tmp/mysql.sock openerp < init.sql
问题4:ERROR 1118 (42000): Row size too large
原因:InnoDB的行大小限制(约8126字节)与UTF8MB4字符集冲突。
解决:
sql
-- 在导入前执行
SET GLOBAL innodb_strict_mode = OFF;
-- 导入完成后恢复
SET GLOBAL innodb_strict_mode = ON;
-- 或修改MySQL配置文件
-- 在 my.cnf 中添加: innodb_strict_mode=OFF
4.4 创建MySQL配置文件(my.cnf)
为了优化MySQL运行,可以创建配置文件:
bash
cat > ~/mysql/my.cnf << 'EOF'
[mysqld]
# 基础设置
port=3306
basedir=/Users/xxx/mysql
datadir=/Users/xxx/mysql/data
socket=/tmp/mysql.sock
pid-file=/tmp/mysql.pid
# 字符集
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
# 连接设置
max_connections=200
wait_timeout=600
max_allowed_packet=256M
# 内存设置
innodb_buffer_pool_size=512M
innodb_log_file_size=256M
# 日志
log-error=/Users/xxx/mysql/data/mysql-error.log
slow-query-log=1
slow-query-log-file=/Users/xxx/mysql/data/mysql-slow.log
long_query_time=2
# SQL模式(放宽限制)
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[client]
default-character-set=utf8mb4
socket=/tmp/mysql.sock
EOF
# 注意:将 xxx 替换为用户名
使用配置文件启动:
bash
cd ~/mysql
bin/mysqld --defaults-file=./my.cnf --datadir=./data --basedir=. &
第五章:Redis安装与配置
5.1 Redis是什么?
Redis(REmote DIctionary Server)是一个开源的内存数据结构存储系统,常用作:
- 缓存:减少数据库查询压力
- 会话存储:保存用户登录状态
- 消息队列:异步任务处理
- 分布式锁:协调多实例并发
本项目使用Redis存储缓存数据和会话信息。
5.2 方式一:使用Homebrew安装(最推荐)
bash
# 如果未安装Homebrew,先安装
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 安装Redis
brew install redis
# 查看安装信息
brew info redis
# 输出示例:
# redis: stable 7.2.4 (bottled), HEAD
# /opt/homebrew/Cellar/redis/7.2.4 (15 files, 2.1MB)
# 会显示配置文件位置、数据目录等
# 启动Redis服务(前台)
redis-server
# 或后台启动
brew services start redis
Homebrew安装的优势:
- ✅ 自动配置环境变量
- ✅ 提供
brew services管理开机自启动 - ✅ 更新方便(
brew upgrade redis)
5.3 方式二:源码编译安装(更灵活)
bash
# 下载Redis源码
curl -L -o /tmp/redis-stable.tar.gz https://download.redis.io/redis-stable.tar.gz
# 解压
tar -xzf /tmp/redis-stable.tar.gz -C ~/
cd ~/redis-stable
# 编译(需要Xcode Command Line Tools)
make
# 安装到用户目录
make PREFIX=~/redis install
# 创建配置文件目录
mkdir -p ~/redis/conf
# 复制默认配置文件
cp redis.conf ~/redis/conf/
# 修改配置(可选)
vim ~/redis/conf/redis.conf
# 主要修改:
# daemonize yes # 后台运行
# port 6379 # 端口(默认)
# bind 127.0.0.1 # 只允许本地连接(安全)
# requirepass # 设置密码(如果需要)
Redis配置文件重要参数
| 参数 | 默认值 | 建议值 | 说明 |
|---|---|---|---|
port |
6379 | 6379 | 监听端口 |
bind |
127.0.0.1 | 127.0.0.1 | 绑定IP(生产环境建议不修改) |
daemonize |
no | yes | 是否后台运行 |
maxmemory |
无 | 512mb | 最大内存限制 |
maxmemory-policy |
noeviction | allkeys-lru | 内存淘汰策略 |
save |
900 1 / 300 10 / 60 10000 | 根据需求 | RDB持久化策略 |
appendonly |
no | yes | 开启AOF持久化 |
requirepass |
空 | 可选 | 设置访问密码 |
5.4 启动Redis
使用Homebrew
bash
# 启动
brew services start redis
# 停止
brew services stop redis
# 重启
brew services restart redis
# 查看状态
brew services list | grep redis
手动启动(源码安装)
bash
# 前台启动(调试用)
~/redis/bin/redis-server ~/redis/conf/redis.conf
# 后台启动
~/redis/bin/redis-server ~/redis/conf/redis.conf --daemonize yes
# 设置开机自启动(Launch Agent)
cat > ~/Library/LaunchAgents/com.redis.redis-server.plist << 'EOF'
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.redis.redis-server</string>
<key>ProgramArguments</key>
<array>
<string>/Users/xxx/redis/bin/redis-server</string>
<string>/Users/xxx/redis/conf/redis.conf</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
EOF
launchctl load ~/Library/LaunchAgents/com.redis.redis-server.plist
5.5 验证Redis运行
bash
# 方式一:使用redis-cli
redis-cli ping
# 应输出: PONG
# 方式二:使用telnet
telnet localhost 6379
# 输入: PING
# 应输出: +PONG
# 方式三:查看端口监听
lsof -i :6379
# 应看到 redis-server 进程
# 查看Redis信息
redis-cli info server
# 输出Redis版本、运行时间等信息
5.6 Redis基本操作测试
bash
# 连接Redis
redis-cli
# 测试读写
127.0.0.1:6379> SET test_key "Hello Redis"
OK
127.0.0.1:6379> GET test_key
"Hello Redis"
127.0.0.1:6379> DEL test_key
(integer) 1
127.0.0.1:6379> EXIT
第六章:Spring Boot应用启动
6.1 环境检查清单
在启动应用之前,逐一确认:
bash
# 1. MySQL运行状态
ps aux | grep mysqld | grep -v grep
lsof -i :3306
# 2. Redis运行状态
ps aux | grep redis | grep -v grep
lsof -i :6379
# 3. 数据库存在且已导入数据
~/mysql/bin/mysql -u root -p123456 -e "USE openerp; SHOW TABLES;"
# 4. JAR包存在
ls -la ~/Desktop/FeiChenERP/backend/target/*.jar
# 5. Java版本正确
java -version | head -1 # 应为 openjdk version "17"
6.2 启动Spring Boot应用
bash
cd ~/Desktop/FeiChenERP/backend
# 方式一:直接启动(使用默认配置)
java -jar target/openerp-backend-1.0.0.jar
# 方式二:指定参数启动(跳过Spring的SQL初始化)
java -jar target/openerp-backend-1.0.0.jar \
--spring.sql.init.mode=never
# 方式三:指定配置文件启动
java -jar target/openerp-backend-1.0.0.jar \
--spring.profiles.active=dev \
--spring.datasource.url="jdbc:mysql://localhost:3306/openerp?useSSL=false" \
--spring.datasource.username=root \
--spring.datasource.password=123456
# 方式四:后台启动并记录日志
nohup java -jar target/openerp-backend-1.0.0.jar \
--spring.sql.init.mode=never \
> app.log 2>&1 &
# 查看日志
tail -f app.log
6.3 启动参数详解
| 参数 | 作用 | 何时使用 |
|---|---|---|
--spring.sql.init.mode=never |
禁用Spring Boot自动执行SQL初始化 | 已手动导入SQL,避免重复执行或冲突 |
--spring.profiles.active=dev |
激活dev配置文件 | 使用 application-dev.yml 中的配置 |
--server.port=8081 |
修改应用端口 | 默认8080被占用时 |
--spring.datasource.password=xxx |
覆盖配置文件中的数据库密码 | 数据库密码与配置文件不同时 |
6.4 启动成功标志
应用启动成功后,日志中会看到:
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v3.2.5)
2026-07-26 10:30:15.123 INFO 12345 --- [ main] com.erp.OpenerpApplication : Starting OpenerpApplication v1.0.0 using Java 17.0.11 with PID 12345 (/Users/xxx/Desktop/FeiChenERP/backend/target/openerp-backend-1.0.0.jar started by xxx in /Users/xxx/Desktop/FeiChenERP/backend)
2026-07-26 10:30:15.456 INFO 12345 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port 8080 (http)
2026-07-26 10:30:15.789 INFO 12345 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
2026-07-26 10:30:16.123 INFO 12345 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
2026-07-26 10:30:16.456 INFO 12345 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port 8080 (http) with context path ''
2026-07-26 10:30:16.789 INFO 12345 --- [ main] com.erp.OpenerpApplication : Started OpenerpApplication in 3.456 seconds (process running for 4.123)
6.5 验证应用功能
bash
# 健康检查(如果项目有actuator)
curl http://localhost:8080/actuator/health
# 访问Swagger(如果有)
open http://localhost:8080/swagger-ui.html
# 测试接口
curl -X GET http://localhost:8080/api/users
# 应返回JSON数据(如果接口需要认证,需要先登录)
第七章:启动问题深度排查
7.1 数据库连接失败
错误:Communications link failure
bash
# 排查步骤
# 1. 检查MySQL是否运行
ps aux | grep mysqld | grep -v grep
# 2. 检查端口是否监听
netstat -an | grep 3306
lsof -i :3306
# 3. 尝试用命令行连接
~/mysql/bin/mysql -u root -p123456 -h 127.0.0.1 -P 3306
# 4. 检查socket文件
ls -la /tmp/mysql.sock
# 5. 查看MySQL错误日志
tail -50 ~/mysql/data/mysql-error.log
错误:Access denied for user 'root'@'localhost'
bash
# 重置root密码
cd ~/mysql
# 停止MySQL
kill $(cat /tmp/mysql.pid)
# 跳过权限验证启动
bin/mysqld --datadir=./data --basedir=. --skip-grant-tables &
# 连接并重置密码
bin/mysql -u root
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
FLUSH PRIVILEGES;
EXIT;
# 重启MySQL(正常模式)
kill $(cat /tmp/mysql.pid)
bin/mysqld --datadir=./data --basedir=. --port=3306 &
错误:Unknown database 'openerp'
bash
# 创建数据库
~/mysql/bin/mysql -u root -p123456 -e "CREATE DATABASE openerp DEFAULT CHARACTER SET utf8mb4;"
# 重新导入数据
~/mysql/bin/mysql -u root -p123456 openerp < ~/Desktop/FeiChenERP/sql/init.sql
7.2 Redis连接失败
错误:Connection refused: localhost/127.0.0.1:6379
bash
# 1. 检查Redis是否运行
ps aux | grep redis | grep -v grep
redis-cli ping
# 2. 检查端口
lsof -i :6379
# 3. 启动Redis
brew services start redis
# 或
redis-server --daemonize yes
# 4. 检查bind配置
cat ~/redis/conf/redis.conf | grep bind
# 如果是 bind 127.0.0.1,确保应用连接的是127.0.0.1
错误:NOAUTH Authentication required
bash
# 如果Redis设置了密码,应用需要配置
# 在application.yml中添加:
spring:
redis:
password: your_password
# 或在启动时指定:
java -jar app.jar --spring.redis.password=your_password
7.3 端口冲突问题
bash
# 查看所有服务端口占用
sudo
> 您好,我是肥晨。
> 欢迎关注我获取前端/AI学习资源,日常分享技术变革,生存法则;行业内幕,洞察先机。