跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
SQL

Docker 部署 MySQL 8.0 完整指南:从拉取镜像到配置远程访问

Docker 部署 MySQL 8.0 教程涵盖镜像拉取、容器运行配置、持久化挂载、时区字符集设置及远程访问授权步骤。通过 docker run 命令映射端口与数据目录,修改 my.cnf 配置文件解决兼容性问题,最后通过 SQL 语句开放 root 用户远程连接权限,实现生产环境的基础数据库服务搭建。

月亮邮递员发布于 2025/10/3更新于 2026/7/2344 浏览

前言

本文介绍通过 Docker 部署 MySQL 8.0 的方法,需要确保宿主机能够连接网络。其他安装方式请自行查阅相关资料。

一、拉取镜像

# 下面两个命令效果一致
docker pull mysql
docker pull mysql:latest
# 查看可用版本
docker search mysql

二、查看镜像

使用以下命令查看已安装的 MySQL 镜像:

docker images

三、运行容器

docker run -p3306:3306 --name mysql --restart=always --privileged=true \
-v /usr/local/mysql/log:/var/log/mysql \
-v /usr/local/mysql/data:/var/lib/mysql \
-v /usr/local/mysql/conf:/etc/mysql \
-v /etc/localtime:/etc/localtime:ro \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:latest
命令参数说明:
  • -p 3306:3306:宿主机端口与容器端口映射关系
  • --name mysql:容器名称
  • --restart=always:随 Docker 自动启动
  • --privileged=true:获取宿主机 root 权限
  • -v /usr/local/mysql/log:/var/log/mysql:日志目录映射(宿主机:容器)
  • -v /usr/local/mysql/data:/var/lib/mysql:数据目录映射(宿主机:容器)
  • -v /usr/local/mysql/conf:/etc/mysql:配置目录映射(宿主机:容器)
  • -v /etc/localtime:/etc/localtime:ro:容器与宿主机时钟同步(ro 表示只读)
  • -e MYSQL_ROOT_PASSWORD=123456:设置 root 用户密码
  • -d mysql:latest:后台运行最新版 MySQL 容器

四、查看运行容器

# 查看正在运行的容器
docker ps
# 查看所有容器
docker ps -a

如果容器状态显示为 up,表示启动成功。如果显示 restarting,可能存在问题。查看日志:

docker logs -f mysql

可能会发现错误:

Failed to access directory for --secure-file-priv. Please make sure that dir

此时如果执行第五步会报错:

Error response from daemon: Container xxx is restarting, wait until the cont...

需要执行第六步解决。

五、进入容器内部

docker exec -it mysql /bin/bash

六、修改 MySQL 配置

1. 创建配置文件
cd /usr/local/mysql
ll
cd conf
vi my.cnf
2. 配置内容
[client]
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4

[mysqld]
# 设置东八区时区
default-time_zone = '+8:00'
# 设置密码验证规则(authentication_policy 替代已废弃的 default_authentication_plugin)
authentication_policy=mysql_native_password
# 限制导入和导出的数据目录
# 为空:不限制目录;指定目录:必须从该目录导入导出;为 NULL:禁止导入导出功能
secure_file_priv=
init_connect='SET collation_connection = utf8mb4_0900_ai_ci'
init_connect='SET NAMES utf8mb4'
character-set-server=utf8mb4
collation-server=utf8mb4_0900_ai_ci
skip-character-set-client-handshake
skip-name-resolve

说明:MySQL 8.0+ 默认使用 caching_sha2_password 认证方式,修改为 mysql_native_password 以兼容更多客户端。

七、重启 MySQL 服务

docker restart mysql

八、设置 Docker 启动时自动启动 MySQL

docker update mysql --restart=always

九、再次重启 MySQL

docker restart mysql

十、授权远程访问

1. 进入容器内部
docker exec -it mysql /bin/bash
2. 登录 MySQL
mysql -u root -p
# 直接回车进入(使用空密码)
3. 选择数据库
SHOW DATABASES;
USE mysql;
4. 查看用户连接权限
SELECT host, user FROM user;

root 用户默认只有 localhost 连接权限。

5. 修改认证方式和权限
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
UPDATE user SET host = '%' WHERE host = 'localhost' AND user = 'root';
FLUSH PRIVILEGES;
EXIT;
6. 退出容器
exit

完成部署

现在您的 MySQL 容器已成功部署,并支持远程连接。

目录

  1. 前言
  2. 一、拉取镜像
  3. 下面两个命令效果一致
  4. 查看可用版本
  5. 二、查看镜像
  6. 三、运行容器
  7. 命令参数说明:
  8. 四、查看运行容器
  9. 查看正在运行的容器
  10. 查看所有容器
  11. 五、进入容器内部
  12. 六、修改 MySQL 配置
  13. 1. 创建配置文件
  14. 2. 配置内容
  15. 设置东八区时区
  16. 设置密码验证规则(authenticationpolicy 替代已废弃的 defaultauthentication_plugin)
  17. 限制导入和导出的数据目录
  18. 为空:不限制目录;指定目录:必须从该目录导入导出;为 NULL:禁止导入导出功能
  19. 七、重启 MySQL 服务
  20. 八、设置 Docker 启动时自动启动 MySQL
  21. 九、再次重启 MySQL
  22. 十、授权远程访问
  23. 1. 进入容器内部
  24. 2. 登录 MySQL
  25. 直接回车进入(使用空密码)
  26. 3. 选择数据库
  27. 4. 查看用户连接权限
  28. 5. 修改认证方式和权限
  29. 6. 退出容器
  30. 完成部署
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Arthas+IDEA 实战:Java 线上问题排查与 Spring Boot 落地
  • Coze 获取对标行业新闻转视频文案写入飞书多维表实战
  • LLaMA-Factory 大模型微调平台
  • FLUX.1-dev FP8 模型部署与低显存优化实战
  • Java 智能仿真无人机项目:任务处理与多线程协作
  • 2025 年 12 月 GESP CCF 编程能力等级认证 C++ 六级真题
  • AutoGen 多智能体协作框架实战:GroupChatManager 使用详解
  • C++ 模板初阶:函数与类模板详解
  • 零基础 AI 入门指南:从环境搭建到代码调用
  • 基于 ESP32-S3 芯片的 Wi-Fi 智能机器人设计与实现
  • OpenClaw Web Search 配置与渠道选择指南
  • 智能家居中控屏:基于 GLM-4.6V-Flash-WEB 识别家庭成员与习惯
  • MCP Server 案例:Excel 表格一键生成可视化图表 HTML 报告
  • GESP 2025 年 12 月 C++ 六级真题解析(单选 8-15 题)
  • C++11 右值引用、移动语义及 Lambda 表达式详解
  • 智能客服对话机器人设计:从架构到生产部署
  • VS Code 中 GitHub Copilot 核心功能与实战入门
  • 使用 Docker 部署 OpenClaw 实践
  • C++ 笔试刷题:排序子序列、消减整数与最长上升子序列
  • MVEL 表达式编译与执行测试

相关免费在线工具

  • SQL 美化和格式化

    在线格式化和美化您的 SQL 查询(它支持各种 SQL 方言)。 在线工具,SQL 美化和格式化在线工具,online

  • SQL转CSV/JSON/XML

    解析 INSERT 等受限 SQL,导出为 CSV、JSON、XML、YAML、HTML 表格(见页内语法说明)。 在线工具,SQL转CSV/JSON/XML在线工具,online

  • CSV 工具包

    CSV 与 JSON/XML/HTML/TSV/SQL 等互转,单页多 Tab。 在线工具,CSV 工具包在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online