本地搭建 Redis/MySQL 并配置国内镜像加速(Docker/原生安装 | macOS/Linux/Windows)
适用人群:前端/后端/数据/测试工程师;需要在单机上快速搭建 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
,Redisrequirepass
/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:8container_name: local-mysqlrestart: unless-stoppedports:- "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.dhealthcheck:test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]interval: 10stimeout: 5sretries: 5# 若为 Apple Silicon/M 系列遇到镜像架构问题可取消注释# platforms:# - linux/arm64/v8redis:image: redis:7container_name: local-redisrestart: unless-stoppedports:- "6379:6379"command: ["redis-server", "/usr/local/etc/redis/redis.conf"]volumes:- ./redis/data:/data- ./redis/redis.conf:/usr/local/etc/redis/redis.confhealthcheck:test: ["CMD", "redis-cli", "ping"]interval: 10stimeout: 5sretries: 5volumes:# 也可使用命名卷:# 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/*.repo
中baseurl
/mirrorlist
为就近镜像,并sudo dnf makecache
。
务必备份原配置,且注意 发行版代号/版本 的匹配(如
jammy
/focal
、el8
/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)
端口被占用(3306/6379)
lsof -i :3306
/lsof -i :6379
查占用进程;修改 compose 端口映射或停止冲突服务。
Apple Silicon 镜像架构不匹配
为服务添加
platforms: [linux/arm64/v8]
或使用多架构镜像标签。
Docker 拉取缓慢
配置
registry-mirrors
;或在公司网络下走 HTTP(S) 代理。
MySQL 首次登录失败
检查容器健康状态;查看
docker compose logs mysql
;确认 root 密码与环境变量是否生效。
Redis 无法远程连接
检查
bind
、protected-mode
、容器与宿主防火墙;确保密码正确。
Homebrew 安装失败/卡住
优先走代理;若换源,请严格按镜像站文档操作并及时还原。
性能调优(开发机取舍)
MySQL:
innodb_buffer_pool_size
占内存的 30%~50%(开发机按需)innodb_flush_log_at_trx_commit=2
提升写入吞吐(开发环境可接受)表字符集统一为
utf8mb4
Redis:
maxmemory
与maxmemory-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
、系统版本、网络环境),便于快速定位。