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

Docker 部署 MySQL 8.0:镜像拉取、配置与远程访问

Docker 部署 MySQL 8.0 涉及镜像拉取、容器运行及参数映射。演示如何通过 docker run 挂载数据卷与配置文件,解决 secure-file-priv 报错问题。重点讲解修改 root 密码认证方式为 mysql_native_password,并授权远程连接权限。最终实现容器自动重启及外部数据库管理工具连接。

DevStack发布于 2026/3/16更新于 2026/9/958 浏览

Docker 部署 MySQL 8.0

本文介绍如何在 Linux 环境下通过 Docker 快速部署 MySQL 8.0,并完成基础配置与远程访问授权。相比传统 yum 安装,容器化部署更利于环境隔离与迁移。

1. 拉取镜像

确保宿主机网络通畅,直接拉取官方镜像即可:

docker pull mysql:latest

如需查看可用版本,可执行 docker search mysql(注:新版 Docker CLI 已逐步弃用该命令,建议直接尝试版本号)。

2. 确认镜像

docker images | grep mysql

3. 运行容器

使用以下命令启动容器,并挂载日志、数据及配置文件到宿主机,方便后续维护:

docker run -p 3306: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:端口映射
  • --restart=always:容器随系统重启自动恢复
  • -v:卷挂载,宿主机路径在前,容器路径在后
  • -e:环境变量,设置 root 密码

4. 检查状态

查看容器是否正常运行:

docker ps

若状态为 Up 表示成功。若遇到 restarting 或报错 Failed to access directory for --secure-file-priv,通常是因为权限或目录问题,需调整配置后重启。

查看实时日志定位问题:

docker logs -f mysql

5. 进入容器内部

docker exec -it mysql /bin/bash

6. 修改 MySQL 配置

由于我们在启动时已将 /usr/local/mysql/conf 映射到容器的 /etc/mysql,因此直接在容器内编辑该路径下的配置文件。

创建/编辑配置文件

cd /etc/mysql
vi my.cnf

配置内容

[client]
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4

[mysqld]
# 设置东八区时区
default-time_zone = '+8:00'
# 兼容旧版客户端认证方式
authentication_policy=mysql_native_password
# 字符集设置
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 兼容性更好。

保存退出后,重启服务使配置生效:

docker restart mysql

7. 设置自动启动

虽然启动时已加 --restart=always,但再次确认更新策略:

docker update mysql --restart=always

8. 授权远程访问

默认情况下,root 用户仅允许 localhost 登录。若需从外部工具(如 Navicat、DBeaver)连接,需修改权限。

1. 重新进入容器

docker exec -it mysql /bin/bash

2. 登录 MySQL

mysql -u root -p
# 输入密码:123456

3. 切换数据库

USE mysql;

4. 查看当前用户权限

SELECT host, user FROM user;

5. 修改认证与授权

将 root 用户的主机权限改为 %(允许任意 IP),并重置密码认证插件:

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 容器已部署完成,支持远程连接。建议在防火墙中放行 3306 端口以确保外部可达。

目录

  1. Docker 部署 MySQL 8.0
  2. 1. 拉取镜像
  3. 2. 确认镜像
  4. 3. 运行容器
  5. 4. 检查状态
  6. 5. 进入容器内部
  7. 6. 修改 MySQL 配置
  8. 创建/编辑配置文件
  9. 配置内容
  10. 设置东八区时区
  11. 兼容旧版客户端认证方式
  12. 字符集设置
  13. 7. 设置自动启动
  14. 8. 授权远程访问
  15. 1. 重新进入容器
  16. 2. 登录 MySQL
  17. 输入密码:123456
  18. 3. 切换数据库
  19. 4. 查看当前用户权限
  20. 5. 修改认证与授权
  21. 6. 退出容器

更多推荐文章

查看全部
  • Linux 进程信号的捕捉处理
  • 2025 年大型语言模型(LLM)15 大突破性发展趋势解析
  • OpenClaw 接入飞书机器人配置教程
  • 基于机器学习的生态组合塘强化城市污水处理厂脱氮优化
  • Layui 框架下 Unity WebGL Tab 切换黑屏问题解决方案
  • 深入理解 Token:自然语言处理中的文本最小单元
  • FPGA 核心硬件资源详解:LUT、FF、BRAM、DSP 与 PLL 解析及综合报告解读
  • 0xGame2025 Week1 完整解题报告(Web/Misc/Reverse/Pwn/Crypto/Osint)
  • AI Agent Skills 资源合集:支持 Cursor、Claude Code 等工具
  • AI动漫制作全流程指南
  • C++ 技术特性与核心就业方向深度解析
  • HarmonyOS 分布式软总线原理剖析:从理论到实践
  • ESP32-S3 本地 AI 模型推理能力与实战指南
  • 基于大模型和 RAG 的智能 Text2SQL 问答系统 SQLBot
  • 前端国际化开发最佳实践
  • Unity VR 全景视频高分辨率播放性能优化方案
  • 2G 内存云服务器部署 Spring Boot + MySQL 实践
  • DFT 测试中的 OCC 架构:片上时钟控制器设计
  • Aspen 15.0 升级亮点:AI 建模与绿氢适配的流程模拟功能解析
  • 前端请求后端 404/405/500 状态码排查与解决指南

相关免费在线工具

  • 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