适用人群:前端/后端/数据/测试工程师;需要在单机上快速搭建 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: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/*.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、系统版本、网络环境),便于快速定位。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/94822.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/94822.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/94822.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SynClub-百度在海外推出的AI社交产品

本文转载自&#xff1a;SynClub-百度在海外推出的AI社交产品 - Hello123工具导航 ** 一、&#x1f916; SynClub 是什么&#xff1f; SynClub 是百度出海的 AI 社交产品&#xff0c;主打 "打造专属 AI 朋友" 的创新概念&#xff0c;让你在虚拟世界拥有真正懂你的贴…

Easy Rules规则引擎:轻量级Java规则处理实践指南

引言:业务规则与代码解耦的艺术 在现代软件开发中,业务规则频繁变更与核心逻辑稳定性之间的矛盾日益突出。传统硬编码的if-else语句在面对复杂业务场景时会导致: 代码臃肿:成百上千的条件分支难以维护 耦合度高:业务逻辑与系统架构深度绑定 变更成本高:微小规则调整需要…

机器人 - 无人机基础(5) - 飞控中的传感器

目录 一、加速度计 1.1 加速度计原理 1.2 加速度计校准 1.2.1 误差模型 1.2.2 关于MPU6050校准方式 与 代码思路 二、陀螺仪 2.1 陀螺仪原理 2.1.1 科里奥利力 2.1.2 陀螺仪原理 2.2 陀螺仪校准 三、加速度计与陀螺仪滤波部分 四、磁力计 4.1 磁力计原理 4.2 磁力…

PHP - 线程安全 - 疑问与答案

线程安全问题&#xff08;多线程环境需加锁&#xff09; 怎么理解 php有线程安全问题吗要理解 PHP 中的线程安全问题&#xff0c;需要结合 PHP 的运行模式和线程安全的本质来分析&#xff1a;1. 线程安全的本质线程安全问题的核心是&#xff1a;当多个线程同时访问共享资源&…

使用脚本进行监测以nginx状态页为例

1、首先打开nginx的状态页 location /nginx_status {stub_status on;}2、进行访问测试 curl http://127.0.0.1/nginx_statusActive connections: 1 server accepts handled requests1 1 1 Reading: 0 Writing: 1 Waiting: 03、在客户端编写脚本进行数据采集 编写脚本方便采集不…

prettier、eslint、stylelint在项目中使用

prettier 1&#xff09;vscode中使用 a. 安装插件(Prettier)安装成功后&#xff0c;在你打开支持的文件时&#xff0c;下方文件信息状态栏会有prettier标致&#xff1a;双击它或者直接在输出命令窗口那里查看prettier的日志信息&#xff1a;从日志这里可以看出&#xff0c;它是…

【C++】类对象内存布局与大小计算

1. 计算类对象的大小类实例化的对象中只存储成员变量&#xff0c;不存储成员函数&#xff0c;函数要用是通过 this 指针拿的。因为一个类可以实例化出 N 个对象&#xff0c;每个对象的成员变量都可以存储不同的值&#xff0c;但是调用的函数却是同一个。如果每个对象都成员函数…

容易忽视的TOS无线USB助手配网和接入USB使用: PC和TOS-WLink需要IP畅通,

引言&#xff1a;我们常常把重心放在了TOS-WLink的加入路由器&#xff0c;获取IP&#xff1b;常常忽视了其实是要求PC和TOS-WLink需要IP畅通TOS无线USB助手首次蓝牙配网, 无线接入USB设备到电脑, 分为是两个过程&#xff1a;1, 蓝牙连接TOS-WLink&#xff0c;如果配置的WIF…

学习Python中Selenium模块的基本用法(7:元素操作-1)

定位网页元素后&#xff0c;Selenium模块支持点击、发送文本或按键、清除内容等操作。本文以百度网站为例学习并测试这几类操作的基本用法。首先是发送文本或按键&#xff0c;主要用到send_keys函数&#xff0c;如果是发送文本&#xff0c;则直接将文本内容作为函数入参即可&am…

使用MP4视频格式链接地址的自适应视频弹窗实现方案HTML代码

以下是使用MP4视频格式链接地址的自适应视频弹窗实现方案&#xff1a;视频弹窗播放器 使用原生MP4视频格式链接&#xff0c;直接通过HTML5 video元素播放 响应式设计适配不同屏幕尺寸&#xff0c;16:9视频比例保持不变 底部视频列表可横向滚动&#xff0c;点击缩略图切换不同视…

中农具身导航赋能智慧农业!AgriVLN:农业机器人的视觉语言导航

作者&#xff1a;Xiaobei Zhao, Xingqi Lyu, Xiang Li单位&#xff1a;中国农业大学论文标题&#xff1a;AgriVLN: Vision-and-Language Navigation for Agricultural Robots论文链接&#xff1a;https://arxiv.org/pdf/2508.07406v1代码链接&#xff1a;https://github.com/Al…

Zynq开发实践(Verilog、仿真、FPGA和芯片设计)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】zynq最大的优势&#xff0c;就是把arm和fpga结合在一起了。这样一颗soc里面&#xff0c;就可以用软件去驱动外设ip&#xff0c;这是之前没有过的体验…

LabVIEW刺激响应测量解析

​该 LabVIEW 程序用于刺激 - 响应测量&#xff0c;实现测试信号生成、响应采集及测量分析&#xff0c;涵盖信号同步、并行处理等概念&#xff0c;用于设备总谐波失真&#xff08;THD&#xff09;等电信号特性测量场景&#xff0c;借助 LabVIEW 图形化编程优势&#xff0c;将复…

Boosting(提升法)详解

一、引言在集成学习&#xff08;Ensemble Learning&#xff09;中&#xff0c;Boosting&#xff08;提升法&#xff09; 是一种非常经典且强大的方法。它通过将多个弱学习器&#xff08;Weak Learners&#xff09;进行迭代组合&#xff0c;逐步提升整体的预测性能&#xff0c;从…

宠物智能手机PetPhone技术解析:AI交互与健康监测的系统级创新

当你的宠物通过AI自主接听视频通话&#xff0c;背后是计算机视觉与边缘计算的技术融合。全球首款宠物智能手机正在重新定义跨物种人机交互。近日&#xff0c;亚洲宠物展览会上亮相的PetPhone引发了技术社区的广泛关注。这款专为宠物设计的智能设备集成了多项技术创新&#xff0…

智慧零售商品识别误报率↓74%!陌讯多模态融合算法在自助结算场景的落地优化

原创声明&#xff1a;本文为原创技术解析文章&#xff0c;核心技术参数与架构设计引用自 “陌讯技术白皮书”&#xff0c;禁止未经授权的转载与篡改。文中算法逻辑与实战方案均基于陌讯视觉算法 v3.2 版本展开&#xff0c;所有实测数据均来自智慧零售场景下的真实部署环境。一、…

ArcGIS学习-9 ArcGIS查询操作

前置操作加载数据修改坐标系修改单位属性查询单条件查询打开安徽省县界的属性表多条件查询值得注意的是&#xff0c;不加括号和前面加括号&#xff0c;查出来的结果一致&#xff08;35条记录&#xff09;而后面加括号&#xff0c;查询结果与之前的不一致&#xff08;25条记录&a…

A-Level物理课程全解析:知识点、学习计划与培训机构推荐

A-Level物理课程是国际教育体系中的重要科目&#xff0c;不仅为大学理工科专业打下基础&#xff0c;也培养学生的科学思维与实验能力。本文将从核心知识点解析、高效学习计划制定&#xff0c;以及优质培训机构推荐三个方面&#xff0c;为学生和家长提供全面、实用的指南。一、A…

Linux 进阶之性能调优,文件管理,网络安全

一、系统性能调优系统性能调优是 Linux 管理中的关键技能&#xff0c;它能显著提升系统在不同应用场景下的表现。通过针对性的调优&#xff0c;可以解决资源瓶颈问题&#xff0c;提高服务响应速度&#xff0c;优化资源利用率。&#xff08;一&#xff09;CPU 性能调优知识点详解…

【科普向-第五篇】MISRA C实战手册:规则与指令全解析

目录 引言 1.1 起源与目的 1.2 规则体系结构 一.变量与类型&#xff08;Rule 1–9&#xff09; Rule 1.1 — 变量必须显式初始化&#xff08;Mandatory&#xff09; Rule 1.2 — 使用固定宽度整数类型&#xff08;Mandatory&#xff09; Rule 1.3 — 避免未定义行为的类…