Docker安装MySQL 8.0两个版本的命令总结

 更新时间:2026年03月23日 09:57:03   作者:连杰李  
docker是一种开源的容器化平台,可以将应用程序及其依赖项打包成一个隔离的容器,然后在任何操作系统中运行,MySQL是一个流行的开源关系型数据库管理系统,这篇文章主要介绍了Docker安装MySQL 8.0两个版本的命令,需要的朋友可以参考下

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

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

简化版(快速体验)

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

docker run -d \
  --name mysql8 \
  -p 3306:3306 \
  -e MYSQL_ROOT_PASSWORD=root \
  mysql:8.0

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

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

# 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. 进入容器:

    docker exec -it mysql8 mysql -uroot -p
    

    (输入你设置的密码)

  2. 修改密码验证方式:
    在 MySQL 命令行中执行,将其改为兼容性更好的 mysql_native_password

    ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'your_secure_password';
    FLUSH PRIVILEGES;
    

补充:如何开启远程访问

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

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

总结

到此这篇关于Docker安装MySQL 8.0两个版本命令总结的文章就介绍到这了,更多相关Docker安装MySQL 8.0命令内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Mysql数据库事务的脏读幻读及不可重复读详解

    Mysql数据库事务的脏读幻读及不可重复读详解

    这篇文章主要为大家介绍了Mysql数据库事务的脏读幻读及不可重复读详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • mysql如何统计同一字段不同值的个数

    mysql如何统计同一字段不同值的个数

    这篇文章主要介绍了mysql如何统计同一字段不同值的个数问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • mysql 查询数据库响应时长的方法示例

    mysql 查询数据库响应时长的方法示例

    要查询MySQL数据库的响应时长,通常我们需要测量查询执行的时间,本文主要介绍了mysql 查询数据库响应时长的方法示例,具有一定的参考价值,感兴趣的可以了解一下
    2024-06-06
  • MySQL 使用事件(Events)完成计划任务

    MySQL 使用事件(Events)完成计划任务

    事件(Events) 是在 MySQL 5.1后引入的,有点类似操作系统的计划任务(cron),但是周期性任务是内置在 MySQL 服务端执行的。本文讲述MySQL如何用事件完成计划任务
    2021-05-05
  • MySQL数据库备份恢复实现代码

    MySQL数据库备份恢复实现代码

    这篇文章主要介绍了MySQL数据库备份恢复实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • MySQL表的基本查询操作大全(这一篇够了)

    MySQL表的基本查询操作大全(这一篇够了)

    表的增删查改,简称表的 CURD 操作 : Create(创建),Update(更新),Retrieve(读取),Delete(删除),这篇文章主要介绍了MySQL表的基本查询操作,感兴趣的朋友一起看看吧
    2024-02-02
  • MySQL是怎么保证主备一致的

    MySQL是怎么保证主备一致的

    大家知道 binlog 可以用来归档,也可以用来做主备同步,但它的内容是什么样的呢?为什么备库执行了 binlog 就可以跟主库保持一致了呢,本文就详细的介绍一下
    2021-09-09
  • MySQL如何创建可以远程访问的root账户详解

    MySQL如何创建可以远程访问的root账户详解

    作为MySQL数据库管理员,创建远程用户并设置相应的权限是一项常见的任务,下面这篇文章主要给大家介绍了关于MySQL如何创建可以远程访问的root账户的相关资料,需要的朋友可以参考下
    2024-04-04
  • MySQL实现字段或字符串拼接的三种方式总结

    MySQL实现字段或字符串拼接的三种方式总结

    这篇文章主要为大家详细介绍了MySQL中实现字段或字符串拼接的三种方式,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-01-01
  • MySQL系列多表连接查询92及99语法示例详解教程

    MySQL系列多表连接查询92及99语法示例详解教程

    这篇文章主要为大家介绍了MySQL系列多表连接查询92及99语法示例详解教程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2021-10-10

最新评论