当前位置: 首页
数据库
Docker中快速启动MySQL 8.0容器详细教程

Docker中快速启动MySQL 8.0容器详细教程

时间:2026-08-21
转载

在 Docker 中部署 MySQL 8 0 时,有三大常见问题一定要提前避开,分别是:默认禁止远程 root 登录、caching_sha2_password 认证插件与旧版客户端不兼容,以及未挂载数据卷导致容器重启后数据库数据丢失。更稳妥的做法是优先使用命名卷,并配合 --restart unl

在 Docker 中部署 MySQL 8.0 时,有三大常见问题一定要提前避开,分别是:默认禁止远程 root 登录、caching_sha2_password 认证插件与旧版客户端不兼容,以及未挂载数据卷导致容器重启后数据库数据丢失。更稳妥的做法是优先使用命名卷,并配合 --restart unless-stopped 参数,同时按需手动调整认证插件,或挂载 conf.d 配置文件完成自定义设置。

如何在Docker中快速启动MySQL 8.0

使用 docker run 一条命令就可以快速启动 MySQL 8.0,但在实际使用中必须注意几个默认坑位:MySQL 8.0 默认不允许远程 root 登录、默认认证方式与部分老旧客户端不兼容,如果没有挂载数据卷,容器重建或重启后数据库内容也可能全部丢失。下面按不同场景详细说明正确做法。

用 docker run 启动 MySQL 8.0(开发/测试最简方式)

这是最快速启动并连接 MySQL 数据库的方式,尤其适合本地开发和测试环境:

  • mysql:8 是目前更稳妥的标签选择——它通常固定指向 8.0.x 的最新版,而 mysql:latest 目前已经升级到 MySQL 9.x,一般不建议直接使用
  • 必须设置 MYSQL_ROOT_PASSWORD 环境变量,否则 MySQL 容器会因为缺少 root 密码而启动失败
  • 建议优先使用命名卷(例如 mysql8-data),不要直接使用主机目录挂载,这样能有效减少权限冲突和 SELinux 限制带来的问题
  • 建议加上 --restart unless-stopped,避免 Docker 服务或宿主机重启后 MySQL 容器没有自动恢复运行

执行下面这条命令即可完成启动:

docker run -d 
--name mysql8 
-e MYSQL_ROOT_PASSWORD=Root@2026strong 
-p 3306:3306 
-v mysql8-data:/var/lib/mysql 
--restart unless-stopped 
mysql:8

为什么连不上?重点检查 default_authentication_plugin

如果容器启动后,使用客户端连接 MySQL 时报错 Authentication plugin 'caching_sha2_password' cannot be loaded,通常就是 MySQL 8.0 默认认证插件引起的兼容性问题。

  • 根本原因在于 MySQL 8.0 默认使用 caching_sha2_password,而很多老版本数据库客户端(如 Na vicat 15、部分 Python MySQL 驱动)并不支持该认证方式
  • 解决思路不是回退 MySQL 版本,而是把 root 用户认证方式改为兼容性更好的 mysql_native_password
  • 这个设置不能仅靠环境变量一次性完成,通常需要进入容器手动执行:先运行 docker exec -it mysql8 mysql -uroot -p,然后再执行下面的 SQL
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'Root@2026strong';

如果还没有开启远程访问权限,这里还需要补充执行:CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'Root@2026strong'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;通过这组语句,可以创建名为 root、密码为 Root@2026strong 的用户,并授予其对所有数据库和数据表的完整权限,同时允许该用户从任意 IP 地址远程连接 MySQL。

挂载自定义配置文件(生产必备)

仅依赖环境变量通常只能完成基础初始化配置;如果你还需要调整 innodb_buffer_pool_size、max_connections,或者设置字符集与排序规则,就必须通过挂载配置文件来实现。

  • 不要直接覆盖 /etc/mysql/my.cnf,更推荐将自定义配置挂载到 /etc/mysql/conf.d/ 目录下,MySQL 会自动读取所有以 .cnf 结尾的配置文件
  • 配置文件内容必须包含完整配置段,例如以 [mysqld] 开头,否则 MySQL 可能无法正常启动
  • 还要注意文件权限:宿主机上的配置文件需要对 UID 999(即 MySQL 容器内部运行用户)可读,在 Linux 环境下可通过 chown 999:999 my.cnf 进行调整

示例 my.cnf 内容:

[mysqld]
default_authentication_plugin=mysql_native_password
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
innodb_buffer_pool_size=1G
max_connections=200

容器启动时加上这一项即可:-v /path/to/my.cnf:/etc/mysql/conf.d/my.cnf

数据卷权限和 SELinux 常见卡点

如果 MySQL 启动后,日志中反复出现 Can't start server : Bind on unix socket 或 Permission denied,大多数情况下都是数据卷权限设置不正确导致的。

  • 使用命名卷(docker volume create mysql8-data)通常不会遇到权限问题,因为 Docker 会自动处理对应目录权限
  • 如果仍然使用绑定挂载(-v /host/path:/var/lib/mysql),那么在 Linux 主机上必须保证该目录的属主为 UID 999,或者在启动容器时加上 --user 999:999
  • 当宿主机启用了 SELinux(如 CentOS、RHEL)时,还需要在挂载路径后追加 :z 标签,例如 -v /data/mysql:/var/lib/mysql:z
  • 在 Windows 或 macOS 的 Docker Desktop 环境中通常不会受这个问题影响,但如果是在 WSL2 子系统内运行 Docker,仍然需要特别留意挂载权限

最省心、也最适合大多数用户的方案是:不要使用绑定挂载,直接采用命名卷,并结合定期执行 docker exec 进行数据库备份。

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

同类文章
更多
Redis是什么:核心特性、架构与应用场景解析

Redis是什么:核心特性、架构与应用场景解析

Redis是一款基于内存的键值型NoSQL数据库,以超高读写速度和丰富的数据结构著称。本文系统梳理Redis的核心特性、架构组成、性能优势及典型应用场景,并通过与Memcached、MySQL、MongoDB的对比,帮助开发者快速判断Redis是否适合当前业务需求。

时间:2026-09-01 06:20
Windows 安装 MongoDB 完整图文教程

Windows 安装 MongoDB 完整图文教程

本文详细介绍在 Windows 系统上安装 MongoDB 的完整流程。从官网下载 MSI 安装包开始,逐步演示自定义安装路径、配置 Windows 服务、跳过 MongoDB Compass 等关键选项,并提供通过系统服务列表验证安装是否成功的方法,帮助开发者快速搭建本地 MongoDB 环境。

时间:2026-09-01 06:20
Linux 安装 MongoDB 完整指南:依赖配置、环境变量与服务启动

Linux 安装 MongoDB 完整指南:依赖配置、环境变量与服务启动

本文详解在 Linux 系统下安装 MongoDB 的完整流程,涵盖依赖包安装、二进制包下载解压、环境变量配置、数据与日志目录创建及服务启动验证。通过标准化命令与路径说明,帮助开发者快速完成部署并确认服务状态。

时间:2026-09-01 06:20
MacOS安装MongoDB完整教程

MacOS安装MongoDB完整教程

本文介绍在MacOS系统下安装MongoDB的完整流程,涵盖下载、解压、目录配置、环境变量设置及服务启动。通过明确的命令与参数说明,帮助开发者快速完成环境搭建并验证安装结果。

时间:2026-09-01 06:19
Ubuntu系统安装与配置Redis完整指南

Ubuntu系统安装与配置Redis完整指南

本文详解在Ubuntu系统中安装Redis的两种主流方式:apt在线安装与源码编译安装。涵盖版本选择逻辑、服务启停与状态检查、连接验证方法,以及在线练习工具与桌面GUI客户端的对比与使用建议,帮助开发者快速搭建并验证Redis运行环境。

时间:2026-09-01 06:19
热门专题
更多
刀塔传奇破解版无限钻石下载大全 刀塔传奇破解版无限钻石下载大全
洛克王国正式正版手游下载安装大全 洛克王国正式正版手游下载安装大全
思美人手游下载专区 思美人手游下载专区
好玩的阿拉德之怒游戏下载合集 好玩的阿拉德之怒游戏下载合集
不思议迷宫手游下载合集 不思议迷宫手游下载合集
百宝袋汉化组游戏最新合集 百宝袋汉化组游戏最新合集
jsk游戏合集30款游戏大全 jsk游戏合集30款游戏大全
宾果消消消原版下载大全 宾果消消消原版下载大全