"/>

macOS 安装 Redis 和 MySQL 的常见问题及解决方案

一、Redis 安装与启动

安装前清理(建议先卸载旧版本)

  1. 查看 Redis 是否已安装:
brew list | grep redis
  1. 如果已安装,先卸载:
brew uninstall redis
  1. 可选:清除残留配置文件和数据目录(根据需要):
rm -rf /usr/local/var/db/redis
rm -rf /usr/local/etc/redis.conf

安装步骤

  1. 安装 Homebrew(若尚未安装):
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  1. 使用 Homebrew 安装 Redis:
brew install redis
  1. 启动 Redis:
# 前台运行
redis-server

# 后台作为服务运行
brew services start redis
  1. 测试 Redis 是否正常工作:
redis-cli ping
# 返回 PONG 即为成功
  1. 停止 Redis 服务:
brew services stop redis

二、Spring Boot 集成 Redis 报错排查

问题一:Tomcat 无法启动,提示 Lettuce Timer 线程未关闭

  • 现象: 提示线程 lettuce-timer 未关闭,可能造成内存泄漏。
  • 原因: Redis 连接未正常释放。
  • 解决方案:@PreDestroy 方法中释放连接:
@PreDestroy
public void cleanUp() {
    if (redisConnectionFactory instanceof LettuceConnectionFactory) {
        ((LettuceConnectionFactory) redisConnectionFactory).destroy();
    }
}

问题二:redisConnectionFactory 报错,提示 Host must not be empty

  • 现象: 无法创建 RedisTemplate,错误指向 host 为空。
  • 解决方案:
    • 检查 application.ymlapplication.properties 中 Redis 配置是否正确:
spring:
  redis:
    host: localhost
    port: 6379
  • 检查配置是否被多环境文件覆盖。
  • 如果是 Java 配置类,确保 LettuceConnectionFactory 正确传入主机和端口。

问题三:Tomcat 启动失败,Bean 初始化失败

  • 现象: Bean 注入失败,逐层排查到 RedisTemplate。
  • 解决方案:
    • Redis 服务是否运行。
    • spring.redis.host 是否配置正确。
    • 是否使用了动态配置或环境变量未加载。

三、MySQL 安装与启动问题

安装前清理(建议先卸载旧版本)

  1. 停止旧服务(如有):
brew services stop mysql@8.0
  1. 卸载已安装的 MySQL:
brew uninstall --force mysql@8.0
  1. 删除残留数据目录和配置:
rm -rf /opt/homebrew/var/mysql
rm -rf ~/Library/LaunchAgents/homebrew.mxcl.mysql@8.0.plist

安装 MySQL

  1. 安装指定版本:
brew install mysql@8.0
  1. 启动服务:
brew services start mysql@8.0

常见问题

问题一:brew 提示 formula 未安装

  • 运行以下命令安装:
brew install mysql@8.0

问题二:Postinstall 未成功

  • 执行:
brew postinstall mysql@8.0

问题三:服务无法启动,提示 bootstrap failed

  • 原因: 权限问题或数据目录未初始化。
  • 解决方案:
sudo chown -R $(whoami):staff /opt/homebrew/var/mysql
brew postinstall mysql@8.0
brew services start mysql@8.0

问题四:登录 MySQL 时不知道密码

  • 启动安全模式跳过权限验证:
brew services stop mysql@8.0
/opt/homebrew/opt/mysql@8.0/bin/mysqld_safe --skip-grant-tables --datadir=/opt/homebrew/var/mysql
  • 另开终端重设密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
FLUSH PRIVILEGES;

配置 PATH(可选)

echo 'export PATH="/opt/homebrew/opt/mysql@8.0/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc

创建数据库

CREATE DATABASE bombsandsatellite_test;

可选:创建用户并授权:

CREATE USER 'your_user'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON bombsandsatellite_test.* TO 'your_user'@'localhost';
FLUSH PRIVILEGES;

此文档适用于常见的 macOS 下 Redis 与 MySQL 安装、配置及与 Spring Boot 集成过程中的报错排查与解决。