我需要一个 Docker 安装 MySQL 8.0 的命令

我需要一个 Docker 安装 MySQL 8.0 的命令

为了帮你用 Docker 安装 MySQL 8.0,我准备了两个版本的命令。如果你是第一次使用,建议先用简化版 快速跑起来;如果你希望数据能长期保存、配置更灵活(比如为了生产环境或重要开发),请直接使用完整版。

🚀 简化版(快速体验)

这条命令最短,适合快速启动一个 MySQL 实例进行测试,但容器删除后数据会丢失。

bash 复制代码
docker run -d \
  --name mysql8 \
  -p 3306:3306 \
  -e MYSQL_ROOT_PASSWORD=root \
  mysql:8.0

💡 完整版(推荐,数据持久化 + 详细配置)

这条命令包含了数据挂载、配置文件挂载、时区设置和开机自启,适合长期使用。

bash 复制代码
# 1. 先在宿主机创建必要的目录
mkdir -p ~/docker/mysql/{data,conf}

# 2. 启动容器的完整命令
docker run -d \
  --name mysql8 \
  -p 3306:3306 \
  -e MYSQL_ROOT_PASSWORD=your_secure_password \
  -e TZ=Asia/Shanghai \
  -v ~/docker/mysql/data:/var/lib/mysql \
  -v ~/docker/mysql/conf:/etc/mysql/conf.d \
  --restart unless-stopped \
  mysql:8.0 \
  --character-set-server=utf8mb4 \
  --collation-server=utf8mb4_unicode_ci

📝 命令参数详解

为了让您更清楚每部分的作用,我为您拆解了完整版命令的含义:

参数 说明
-d 后台运行容器(守护式运行)。
--name mysql8 为容器指定一个名字,方便后续管理(如 docker stop mysql8)。
-p 3306:3306 端口映射,将宿主机的 3306 端口映射到容器的 3306 端口。
-e MYSQL_ROOT_PASSWORD=... 必须设置,这是 root 用户的登录密码。
-v ~/docker/... 数据持久化。将容器内的数据目录和配置目录挂载到宿主机,防止容器删除后数据丢失。
--restart unless-stopped 容器开机自启策略,除非手动停止,否则随 Docker 自动启动。
--character-set-server=utf8mb4 额外追加的 MySQL 参数,设置默认字符集为 utf8mb4,支持存储表情符号。

⚠️ 特别注意:远程连接与密码插件

MySQL 8.0 默认使用新的密码验证插件 caching_sha2_password,部分旧的客户端工具(如老版本 Navicat)可能无法连接。

如果遇到连接问题,请按以下步骤解决:

  1. 进入容器:

    bash 复制代码
    docker exec -it mysql8 mysql -uroot -p

    (输入你设置的密码)

  2. 修改密码验证方式:

    在 MySQL 命令行中执行,将其改为兼容性更好的 mysql_native_password:

    sql 复制代码
    ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'your_secure_password';
    FLUSH PRIVILEGES;

🛠️ 补充:如何开启远程访问

如果您需要从其他机器访问这个数据库,除了上面的修改插件步骤外,还需要确保:

  1. 防火墙开放端口 :确保宿主机防火墙放行了 3306 端口。
  2. 用户授权 :如果您创建了新用户,记得授权 %(所有主机)访问,或者在启动时添加环境变量 -e MYSQL_ROOT_HOST=% 允许 root 远程登录。

需要我再提供一份初始化 SQL 脚本,帮你自动创建库、表和测试数据吗?

相关推荐
Brilliantee40442 分钟前
docker迁移SOP
docker·容器·eureka
kuroomi42 分钟前
K8s集群升级与etcd备份恢复实战
容器·kubernetes·etcd
PHP实战开发录1 小时前
PHP上传文件为什么会被覆盖
数据库·mysql·php
小米里的大麦1 小时前
17 MySQL 视图
数据库·mysql
大盛供应链·卢生1 小时前
半导体行业发展的主要驱动力,到底是什么?
容器·新浪微博
川石课堂软件测试1 小时前
自动化测试|持续集成Git使用详解
git·python·jmeter·mysql·ci/cd·容器·kubernetes
鱼很腾apoc2 小时前
【MySQL】 第2期 查询与函数系统详解:从基础 CRUD 到复合多表查询
linux·数据库·学习·mysql·dml
老男孩游戏时光2 小时前
MySQL锁机制详解,行锁表锁间隙锁到底怎么回事
mysql
探索云原生2 小时前
KServe 工作流程:从 InferenceService 到 vLLM 服务
docker·ai·云原生·kubernetes·go
剑锋所指,所向披靡!3 小时前
Docker基础
运维·docker·容器