当前位置: 首页 > news >正文

一站式Windows下Docker开启MySQL并链接本地Navicat(附乱码解决方案)


📖 本文目标

10分钟完成以下操作

  1. 用Docker快速部署MySQL数据库
  2. 用Navicat本地连接Docker中的MySQL
  3. 彻底解决中文乱码问题
  4. 避坑指南(附解决方案)

🛠️ 准备工作

  1. 安装Docker Desktop
    • 官网下载:
    • 安装后启动Docker,右下角鲸鱼图标显示“Running”即成功。
  2. 安装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配置连接

  1. 打开Navicat → 连接MySQL
  2. 填写以下信息:
    • 连接名:任意(如Docker-MySQL
    • 主机:localhost 或容器的IP(如172.17.0.2
    • 端口:3306
    • 用户名:root
    • 密码:123456
  3. 测试连接 → 显示“连接成功” ✅

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高效管理数据!
    如有问题,欢迎评论区留言,我会第一时间回复!

相关文章:

  • Docker学习笔记-docker安装、删除
  • 单片机任意普通IO引脚使用定时器扩展外部中断的巧妙方法
  • 如何撤回刚提交的 commit
  • 在交换机上划分VLAN并配置IP地址的完整指南
  • C数据结构--顺序表
  • 【Linux】41.网络基础(2.3)
  • SQL 查询中 ORDER BY 的执行顺序
  • 30学Java第十天——类加载的过程
  • **searchProperties 是什么,python中**是什么:解包字典的操作符
  • camx的xml解析
  • 【跳坑日记】Jetson 6.2 编译cuda-sample报错:No CMAKE_CUDA_COMPILER could be found
  • java android持久化数据
  • c#内存泄露的原因和解决办法
  • 全新电脑如何快速安装nvm,npm,pnpm
  • 批量将文件夹名称、文件夹路径提取到 Excel 清单
  • git在IDEA中使用技巧
  • RabbitMQ消息的可靠性
  • 腾讯云golang一面
  • Project ERROR: liblightdm-qt5-3 development package not found问题的解决方法
  • 基于 Python 和 OpenCV 技术的疲劳驾驶检测系统(2.0 全新升级,附源码)
  • 匈牙利史专家阚思静逝世,享年87岁
  • 冷冰川谈黑白
  • 体验中国传统文化、采购非遗文创,波兰游客走进上海市群艺馆
  • 泰特现代美术馆25年:那些瞬间,让艺术面向所有人
  • 国家发改委:美芯片药品等领域关税影响全球科技发展,损害人类共同利益
  • “一嗨租车”陷“五年后扣费”疑云,用户:违章处理莫名消失