我需要一个 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 脚本,帮你自动创建库、表和测试数据吗?

相关推荐
螺蛳粉 螺蛳粉7 小时前
第 05 篇:etcd 深入:Raft 共识、watch 机制与快照备份恢复实战(底座认知 05)
docker·云原生·容器·kubernetes·etcd·分布式存储·kube-apiserver
幽灵诶8 小时前
Mysql(基于测试的学习)
数据库·mysql
宇宙无敌暴龙战士6669 小时前
MySQL 8 库表操作学习笔记:SQL 基础、库表管理、约束与用户授权全流程
数据库·sql·mysql·学习笔记·后端开发
猿究院_夏燊9 小时前
MySQL 的四种隔离级别
java·数据库·mysql
PellyKoo10 小时前
【docker】cifs卷改smb密码后容器起不来的解决方法
运维·docker·容器
时早玖沐10 小时前
放弃 QQ 官方机器人:用 SnowLuma + AstrBot 自建 QQ 机器人
docker·开源·agent
paopaokaka_luck11 小时前
灾害应急物资管理系统(AI应急助手、Echarts可视化数据看板、捐赠入库联动、 物资全流程管理、库存变动追溯、灾情资讯与互动反馈、物资发放公示)
java·前端·javascript·spring boot·mysql·tomcat·echarts
这个DBA有点耶12 小时前
为什么删掉索引后,查询瞬间变快了?探讨MySQL的随机I/O与顺序I/O博弈
数据库·mysql·代码规范
阿标在干嘛12 小时前
容器编排的“场景适配”:我们为什么在部分服务中回归了Docker Compose?
运维·docker·容器
GreatSQL14 小时前
GreatSQL 8.0回流MySQL 5.7主从复制中断分析排查过程
mysql