Docker 安装 MySQL 8技术文档

📄 Docker 安装 MySQL 8.0.30 技术文档


一、基础信息

  • MySQL 版本:8.0.30

  • Docker 环境:任意支持 Docker 的 Linux 系统

  • 数据与配置持久化路径

    • 数据目录:/usr/local/docker_data/mysql/data

    • 配置目录:/usr/local/docker_data/mysql/conf

    • 日志目录:/usr/local/docker_data/mysql/logs

  • 容器名称mysql8

  • 拉取镜像:

    docker pull mysql:8.0.30

二、创建相关目录

mkdir -p /usr/local/docker_data/mysql/{conf,data,logs}

三、准备配置文件

你可以手动创建一个基本的 my.cnf 配置文件到 /usr/local/docker_data/mysql/conf/my.cnf

[mysqld]
port=3306
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
default_authentication_plugin=mysql_native_password
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
skip-host-cache
skip-name-resolve

[client]
default-character-set=utf8mb4

❗ 注意:如配置目录为空,MySQL 容器会启动失败或加载默认配置。


四、运行 MySQL 8.0.30 容器

docker run -d \
  --name mysql8 \
  -p 3306:3306 \
  -e MYSQL_ROOT_PASSWORD=123456 \
  -v /usr/local/docker_data/mysql/data:/var/lib/mysql \
  -v /usr/local/docker_data/mysql/conf:/etc/mysql/conf.d \
  -v /usr/local/docker_data/mysql/logs:/var/log/mysql \
  mysql:8.0.30

或者使用启动脚本:

#!/bin/bash

# 配置参数
CONTAINER_NAME="mysql8"
MYSQL_PORT=3306
MYSQL_ROOT_PASSWORD="123456"

DATA_DIR="/usr/local/docker_data/mysql/data"
CONF_DIR="/usr/local/docker_data/mysql/conf"
LOGS_DIR="/usr/local/docker_data/mysql/logs"

# 创建目录(如果不存在)
mkdir -p "$DATA_DIR" "$CONF_DIR" "$LOGS_DIR"

# 启动 Docker 容器
docker run \
  --name "$CONTAINER_NAME" \
  -p ${MYSQL_PORT}:3306 \
  --restart unless-stopped \
  -e MYSQL_ROOT_PASSWORD="${MYSQL_ROOT_PASSWORD}" \
  -d \
  -v "$DATA_DIR":/var/lib/mysql \
  -v "$CONF_DIR":/etc/mysql/conf.d \
  -v "$LOGS_DIR":/var/log/mysql \
  mysql:8.0.30  \
  --lower_case_table_names=1

五、验证容器状态

docker ps -a
docker logs -f mysql8

六、常见问题与解决方案

❌ 问题一:Plugin mysql_native_password is not loaded

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
ERROR 1524 (HY000): Plugin 'mysql_native_password' is not loaded
✅ 解决方案:

MySQL 8.0 默认使用 caching_sha2_password 插件,不需要切换。如果确实要用 mysql_native_password

  1. 在容器启动时配置:

    • my.cnf 中添加:

      default_authentication_plugin=mysql_native_password
      
  2. 或换用支持此插件的版本(较旧版本)

  3. 否则无需强制切换,客户端使用新版驱动支持即可。


❌ 问题二:Can't open shared library 'auth_native_password.so'

INSTALL PLUGIN mysql_native_password SONAME 'auth_native_password.so';
ERROR 1126 (HY000): Can't open shared library ...
✅ 说明:

MySQL较新的版本默认并不支持 INSTALL PLUGIN mysql_native_password 方式启用;推荐直接在配置中指定插件,而不是动态加载。或者使用 8.0.30版本


❌ 问题三:Cannot boot server version 80030 on data directory built by version 90300

InnoDB: Cannot boot server version 80030 on data directory built by version 90300. Downgrade is not supported
✅ 解决方案:

你可能曾使用过 MySQL 9.x 写入了数据目录 /usr/local/docker_data/mysql/data,现在用 8.0.30 启动,不能向下兼容

解决方法:

# 删除旧数据目录(谨慎操作)
rm -rf /usr/local/docker_data/mysql/data/*

# 重新启动容器,会重新初始化数据目录
docker restart mysql8

七、允许远程连接

  1. 登录容器:

    docker exec -it mysql8 mysql -uroot -p
    
  2. 修改用户权限:

    ALTER USER 'root'@'%' IDENTIFIED BY '123456';
    FLUSH PRIVILEGES;
    
  3. 修改防火墙或服务器安全组,放行 3306 端口。


八、其他说明

/etc/mysql/conf.d/ 目录说明:

这是容器默认挂载的配置目录,你挂载 my.cnf 到这里,可以覆盖默认设置。不是必须,但推荐使用以便管理配置文件。


九、卸载 MySQL 镜像与容器(如需重新部署)

# 停止并删除容器
docker stop mysql8
docker rm mysql8

# 删除镜像(列出镜像ID后删除)
docker images | grep mysql
docker rmi mysql:8.0.30

Docker是一种轻量级的虚拟化技术,可以让开发者在同一台主机上运行多个独立的容器,每个容器都拥有自己的操作系统、应用程序等。这种技术可以大大提高应用程序的开发效率和部署效率,同时还可以节省硬件资源的消耗。本文将介绍如何在Docker安装MySQL8.0.20。 步骤1:安装Docker 首先需要安装Docker,可以从Docker官方网站下载Docker安装包,在安装之前需要检查操作系统的版本是否符合要求,Docker要求操作系统版本为CentOS 7或者Ubuntu 14.04/16.04/18.04,如果操作系统版本符合要求,可以按照官方文档进行安装。 步骤2:搜索MySQL8.0.20 在DockerHub上搜索MySQL8.0.20的镜像,可以使用docker search命令查找:docker search mysql:8.0.20。在搜索结果中找到适用于自己系统的镜像,根据镜像的名称可以进行下载。 步骤3:拉取MySQL8.0.20镜像 使用docker pull命令从DockerHub上拉取MySQL8.0.20的镜像:docker pull mysql:8.0.20。这一步可能会比较耗时,取决于网络情况。 步骤4:运行MySQL8.0.20容器 使用docker run命令启动MySQL8.0.20容器,同时需要将容器MySQL的端口映射到主机上的一个端口上: docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0.20 解释一下: -p参数将容器MySQL数据库的端口3306映射到主机上的端口3306,这样就可以直接通过主机访问MySQL数据库了。 --name参数为容器指定一个名称,这里指定为mysql。 -e参数设置MySQL数据库的密码,这里设置为123456。 -d参数表示后台运行MySQL8.0.20容器。 步骤5:进入MySQL数据库 启动MySQL8.0.20容器后,可以使用docker ps命令查看正在运行的容器,如果mysql容器正在运行,则可以使用docker exec命令进入容器docker exec -it mysql /bin/bash 这样就可以进入到MySQL容器的控制台,使用mysql命令登录MySQL数据库mysql -uroot -p123456 如果登录成功,说明已经在Docker安装成功了MySQL8.0.20。如果需要对容器进行管理,可以使用docker stop、docker rm等命令停止、删除容器,也可以使用docker start、docker restart等命令启动、重启容器。 总结 在Docker安装MySQL8.0.20比较简单,只需要下载镜像、启动容器,并进行端口映射和密码设置即可。对于开发和测试人员来说,采用Docker进行MySQL部署可以大大提高开发效率,方便快捷。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值