本地搭建 Redis/MySQL 并配置国内镜像加速(Docker/原生安装 | macOS/Linux/Windows)

发布于:2025-08-29 ⋅ 阅读:(16) ⋅ 点赞:(0)

适用人群:前端/后端/数据/测试工程师;需要在单机上快速搭建 Redis 与 MySQL 的开发环境;同时在国内网络环境下加速下载(容器镜像、系统包仓库)。

文章结构:一图流 → TL;DR → Docker 方式 → 原生安装(macOS/Linux/Windows/WSL)→ 国内镜像加速方案 → 初始化与安全 → 常见问题 → 性能与最佳实践


一图流(思维导图)

  • 方案选择:Docker(推荐) / 原生安装

  • 平台:macOS / Linux / Windows(含 WSL2)

  • 加速:Docker Registry Mirror / APT & DNF/YUM / Homebrew / WSL 源

  • 初始化:MySQL mysql_secure_installation,Redis requirepass/appendonly

  • 管理:docker compose / brew services / systemd / Windows 服务


TL;DR(最快上手)

Docker + Compose 一把梭(推荐)

# 1)创建工程目录
mkdir -p ~/dev/db && cd ~/dev/db

# 2)写入 docker-compose.yml(见下方完整示例)

# 3)国内网络建议先配置 Docker 镜像加速(见“国内镜像加速”章节)

# 4)启动
docker compose up -d

# 5)验证
mysql -h 127.0.0.1 -P 3306 -u root -p
redis-cli -h 127.0.0.1 -p 6379 ping

方案一:Docker & Docker Compose(跨平台,最稳)

优点:环境隔离、版本可控、升级回滚简单;对 macOS/Windows 友好;团队可直接复用 docker-compose.yml

1. 示例目录结构

~/dev/db/
├─ docker-compose.yml
├─ mysql/
│  ├─ conf.d/my.cnf            # 自定义配置(可选)
│  └─ data/                    # 数据卷(自动生成)
└─ redis/
   ├─ redis.conf               # 自定义配置(可选)
   └─ data/                    # 数据卷(自动生成)

2. docker-compose.yml(可直接复制)

services:
  mysql:
    image: mysql:8
    container_name: local-mysql
    restart: unless-stopped
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: "root_password_change_me"
      MYSQL_DATABASE: "app_db"
      MYSQL_USER: "app_user"
      MYSQL_PASSWORD: "app_pwd_change_me"
    volumes:
      - ./mysql/data:/var/lib/mysql
      - ./mysql/conf.d:/etc/mysql/conf.d
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
      interval: 10s
      timeout: 5s
      retries: 5
    # 若为 Apple Silicon/M 系列遇到镜像架构问题可取消注释
    # platforms:
    #  - linux/arm64/v8

  redis:
    image: redis:7
    container_name: local-redis
    restart: unless-stopped
    ports:
      - "6379:6379"
    command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
    volumes:
      - ./redis/data:/data
      - ./redis/redis.conf:/usr/local/etc/redis/redis.conf
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 10s
      timeout: 5s
      retries: 5

volumes:
  # 也可使用命名卷:
  # mysql-data:
  # redis-data:

3. 推荐 Redis 配置 redis/redis.conf

# 仅示例,按需调整
bind 0.0.0.0
protected-mode yes
port 6379
requirepass your_redis_password_change_me
appendonly yes
save 900 1
save 300 10
save 60 10000
# 持久化文件位置默认 /data

4. 可选 MySQL 配置 mysql/conf.d/my.cnf

[mysqld]
# 简要示例
character-set-server = utf8mb4
collation-server = utf8mb4_0900_ai_ci
max_connections = 300
sql_mode = STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
# 根据机器内存调整 InnoDB 缓冲
innodb_buffer_pool_size = 512M

5. 常用操作

docker compose up -d             # 启动
docker compose logs -f mysql     # 看日志
docker compose exec mysql bash   # 进入容器
docker compose down              # 停止并移除(不会删卷)

方案二:原生安装(不使用容器)

适合需要与系统服务深度集成、或对容器不熟悉的场景。建议开发机仍优先 Docker。

A. macOS(Homebrew)

# 安装
brew install mysql redis

# 启动与开机自启
brew services start mysql
brew services start redis
# 停止:brew services stop mysql/redis

# 初始化 MySQL(设置 root 密码等)
mysql_secure_installation

# 验证
mysql -u root -p
redis-cli ping

提示:Homebrew 的“国内镜像”随生态变化较快,建议你使用代理或公司内网镜像;若必须换源,请查阅最新可用镜像的官方说明或社区公告,并注意及时还原。

B. Ubuntu/Debian(APT)

# 换 APT 镜像(示例:备份后替换为国内镜像,注意发行版代号)
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
# 编辑 /etc/apt/sources.list,将官方源替换为就近镜像(如阿里云/清华等)
# 完成后:
sudo apt update

# 安装
sudo apt install -y mysql-server redis-server

# 服务管理
sudo systemctl enable --now mysql redis-server

# 初始化 MySQL
sudo mysql_secure_installation

C. CentOS/RHEL/Fedora(DNF/YUM)

# 替换 DNF/YUM 源(建议备份配置再替换为就近镜像,如阿里云等)
# 不同发行版与版本差异较大,请根据官方/镜像站指引替换 repo 文件

# 安装
sudo dnf install -y mysql-server redis
# 或(较老系统)
# sudo yum install -y mysql-server redis

# 启动与开机自启
sudo systemctl enable --now mysqld redis

# 初始化 MySQL(首次安装后随机密码可能在 /var/log/mysqld.log)
sudo grep 'temporary password' /var/log/mysqld.log || true
sudo mysql_secure_installation

D. Windows(原生与 WSL2)

  • 原生安装:到官方/社区发行的安装包安装 MySQL 与 Redis(图形向导);再将其注册为服务。

  • WSL2(推荐)

    # 启用 WSL 与 Ubuntu 发行版(略)
    # 在 Ubuntu 里参考上面的 APT 步骤安装 mysql-server 与 redis-server
    sudo systemctl enable --now mysql redis-server
    
  • 注意

    • Windows 原生 Redis 移交社区维护,推荐 Docker/WSL2。

    • 防火墙放通 3306/6379(谨慎外网暴露)。


国内镜像加速方案(容器与包管理器)

由于镜像站政策变化较快,优先推荐“私有加速器/代理” 或企业内网镜像。以下为通用做法:

1. Docker Hub 加速(daemon.json)

在宿主机创建/编辑 /etc/docker/daemon.json(Windows 在 Docker Desktop 设置里):

{
  "registry-mirrors": [
    "https://<你的加速器地址一>",
    "https://<你的加速器地址二>"
  ]
}
# 重启 Docker
tsudo systemctl restart docker  # Linux
# 或 Docker Desktop 图形界面应用设置 → 重启

加速器来源:常见于云厂商容器镜像服务(如阿里云、腾讯云、华为云)里为你的账号生成的专属地址;也可使用企业私有镜像代理。

2. APT/DNF/YUM 源

  • APT:编辑 /etc/apt/sources.list,替换为就近镜像(阿里云、清华等),sudo apt update

  • DNF/YUM:替换 /etc/yum.repos.d/*.repobaseurl/mirrorlist 为就近镜像,并 sudo dnf makecache

务必备份原配置,且注意 发行版代号/版本 的匹配(如 jammy/focalel8/el9)。

3. Homebrew 加速(macOS)

  • 更稳妥的方式是网络代理;若必须换源,按镜像站最新文档操作,并在不需要时还原,避免后续出现 formula/bottle 不匹配问题。

4. WSL2 源

  • 与对应发行版一致(APT/DNF),但需注意 WSL 的时间与 DNS 配置 正确,避免签名校验失败。


初始化与安全加固

1. MySQL 首次初始化(通用)

# 交互式安全脚本:设置 root 密码、删除匿名用户、禁用远程 root 等
mysql_secure_installation

# 创建应用数据库与用户
mysql -u root -p <<'SQL'
CREATE DATABASE IF NOT EXISTS app_db DEFAULT CHARACTER SET utf8mb4;
CREATE USER IF NOT EXISTS 'app_user'@'%' IDENTIFIED BY 'app_pwd_change_me';
GRANT ALL PRIVILEGES ON app_db.* TO 'app_user'@'%';
FLUSH PRIVILEGES;
SQL

生产环境建议按最小权限与来源 IP 白名单细分账户。

2. Redis 基础安全

  • 设置 requirepass;必要时 rename-command FLUSHALL "DONT_USE_FLUSHALL"

  • 在 Docker 网络内访问,或在宿主防火墙只放通受信网段;

  • 需要持久化与审计的场景开启 appendonly yes,并配置备份。


验证与自检

# MySQL 连接
mysql -h 127.0.0.1 -P 3306 -u app_user -p
# 创建/查询示例
CREATE TABLE app_db.hello(id INT PRIMARY KEY AUTO_INCREMENT, msg VARCHAR(64));
INSERT INTO app_db.hello(msg) VALUES ('hi');
SELECT * FROM app_db.hello;

# Redis 连接
redis-cli -a your_redis_password_change_me PING
redis-cli -a your_redis_password_change_me SET foo bar
redis-cli -a your_redis_password_change_me GET foo

常见问题(FAQ)

  1. 端口被占用(3306/6379)

    • lsof -i :3306 / lsof -i :6379 查占用进程;修改 compose 端口映射或停止冲突服务。

  2. Apple Silicon 镜像架构不匹配

    • 为服务添加 platforms: [linux/arm64/v8] 或使用多架构镜像标签。

  3. Docker 拉取缓慢

    • 配置 registry-mirrors;或在公司网络下走 HTTP(S) 代理。

  4. MySQL 首次登录失败

    • 检查容器健康状态;查看 docker compose logs mysql;确认 root 密码与环境变量是否生效。

  5. Redis 无法远程连接

    • 检查 bindprotected-mode、容器与宿主防火墙;确保密码正确。

  6. Homebrew 安装失败/卡住

    • 优先走代理;若换源,请严格按镜像站文档操作并及时还原。


性能调优(开发机取舍)

  • MySQL

    • innodb_buffer_pool_size 占内存的 30%~50%(开发机按需)

    • innodb_flush_log_at_trx_commit=2 提升写入吞吐(开发环境可接受)

    • 表字符集统一为 utf8mb4

  • Redis

    • maxmemorymaxmemory-policy(如 allkeys-lru)配合,避免 OOM

    • 开启 AOF(appendonly yes)并设置合理 auto-aof-rewrite-percentage

  • Docker Desktop(macOS/Windows):调整 CPU/内存配额,避免容器被限速。


最佳实践清单(可直接抄走)

  • ✅ 开发机优先 Docker + Compose 管理 MySQL/Redis

  • ✅ 使用 私有/企业镜像加速器 或代理,避免不稳定公共源

  • ✅ 配置持久化卷:./mysql/data./redis/data

  • ✅ 初次安装后立刻执行 MySQL 安全加固Redis 密码

  • ✅ 仓库内提交 docker-compose.yml 与最小化配置,团队统一

  • ✅ 避免将数据库端口直接暴露到公网


本地可复制的数据库环境,是研发效率的“加速器”。本文给出了 Docker 与原生两条路径,并结合国内网络环境给出加速思路。你可以直接复制 docker-compose.yml 启动,也可以把配置文件纳入项目仓库实现团队一致性。如遇到版本/镜像源变更导致的拉取失败,建议优先使用云厂商加速器或公司内网代理,并在评论区贴出日志(docker compose logs、系统版本、网络环境),便于快速定位。


网站公告

今日签到

点亮在社区的每一天
去签到