📖 本文目标
10分钟完成以下操作:
- 用Docker快速部署MySQL数据库
- 用Navicat本地连接Docker中的MySQL
- 彻底解决中文乱码问题
- 避坑指南(附解决方案)
🛠️ 准备工作
- 安装Docker Desktop
- 官网下载:
- 安装后启动Docker,右下角鲸鱼图标显示“Running”即成功。
- 安装Navicat
- 自行下载Navicat Premium或MySQL专版(试用版即可)。
1️⃣ Docker部署MySQL
1.1 拉取MySQL镜像
打开终端(PowerShell或CMD),执行:
docker pull mysql:8.0 # 推荐使用8.0稳定版
1.2 创建本地目录(持久化数据)
在Windows上创建以下目录:
E:\Docker\MySQL
├─data # 数据库数据
├─conf # 配置文件
└─log # 日志文件
1.3 配置MySQL容器
(1) 创建配置文件
在 E:\Docker\MySQL\conf
目录下新建 my.cnf
,解决乱码的关键在此!
[mysqld]
character-set-server=utf8mb4 # 设置默认字符集
collation-server=utf8mb4_unicode_ci
default_authentication_plugin=mysql_native_password
# 日志配置(可选)
log_error=/var/log/mysql/mysql-error.log
slow_query_log=1
slow_query_log_file=/var/log/mysql/mysql-slow.log
[client]
default-character-set=utf8mb4
(2) 启动MySQL容器
docker run -d \
--name mysql8 \
-p 3306:3306 \
-v E:\Docker\MySQL\data:/var/lib/mysql \
-v E:\Docker\MySQL\conf:/etc/mysql/conf.d \
-v E:\Docker\MySQL\log:/var/log/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:8.0
参数解释:
-v
:目录挂载(数据、配置、日志持久化)-e MYSQL_ROOT_PASSWORD
:设置root密码
1.4 检查容器状态
docker ps -a | grep mysql8
如果状态为 Up
,表示运行成功!
2️⃣ Navicat连接MySQL
2.1 获取容器IP地址
docker inspect mysql8 | grep IPAddress
输出示例:
"IPAddress": "172.17.0.2"
2.2 Navicat配置连接
- 打开Navicat → 连接 → MySQL
- 填写以下信息:
- 连接名:任意(如
Docker-MySQL
) - 主机:
localhost
或容器的IP(如172.17.0.2
) - 端口:
3306
- 用户名:
root
- 密码:
123456
- 连接名:任意(如
- 测试连接 → 显示“连接成功” ✅
3️⃣ 彻底解决中文乱码问题
3.1 确认MySQL字符集
在Navicat中执行:
SHOW VARIABLES LIKE 'character%';
检查输出是否均为 utf8mb4
:
character_set_client | utf8mb4
character_set_connection | utf8mb4
character_set_database | utf8mb4
character_set_results | utf8mb4
character_set_server | utf8mb4
3.2 修改已有数据库/表的字符集
如果旧数据仍有乱码,执行:
ALTER DATABASE 数据库名 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
🔧 常见问题解决
问题 | 解决方案 |
---|---|
Navicat连接失败 | 1. 检查容器是否运行 2. 确认端口 3306 未被占用3. 防火墙放行3306端口 |
挂载目录权限不足 | 右键目录 → 属性 → 安全 → 添加Everyone 并赋予完全控制权限 |
日志文件未生成 | 检查my.cnf 中日志路径是否正确,目录权限是否开放 |
插入中文仍乱码 | 确保Navicat连接配置的“编码”设置为utf8mb4 |
📌 总结
- 核心步骤:配置
my.cnf
字符集 + 正确挂载目录 + Navicat连接设置。 - 避坑重点:Windows目录权限、字符集统一、容器IP与端口。
按照本教程操作,你可以轻松在Windows下用Docker部署MySQL,并用Navicat高效管理数据!
如有问题,欢迎评论区留言,我会第一时间回复!