使用Docker部署MySQL8.0.29

第一步:拉取镜像
docker pull mysql:8.0.29
  • 作用:从 Docker Hub 拉取 MySQL 8.0.29 官方镜像。
第二步:启动容器
docker run --name share_mysql \
  --restart=always \
  -v mysql-data:/var/lib/mysql \
  -p 3306:3306 \
  -e MYSQL_ROOT_PASSWORD=root \
  -d mysql:8.0.29
  • 参数说明
    • --name share_mysql:容器名称设为 share_mysql
    • --restart=always:容器异常退出时自动重启。
    • -v mysql-data:/var/lib/mysql:将容器内的 /var/lib/mysql 目录挂载到 Docker 卷 mysql-data(数据持久化)。
    • -p 3306:3306:将宿主机的 3306 端口映射到容器的 3306 端口。
    • -e MYSQL_ROOT_PASSWORD=root:设置 MySQL root 用户密码为 root
第三步:测试 MySQL 服务
  1. 进入容器

    docker exec -it share_mysql /bin/bash
  2. 登录 MySQL

    mysql -u root -p
    • 输入密码:root
      docker rm -v share_mysql

  3. 验证登录成功

    • 若出现 mysql> 提示符,表示连接成功。
第四步:修改密码校验方式
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
  • 作用:将 root 用户的密码验证方式改为 mysql_native_password(兼容旧版客户端)。
  • 说明:MySQL 8.0 默认使用 caching_sha2_password,某些客户端可能不支持此方式。
第五步:验证外部连接
  1. 使用 MySQL 客户端工具(如 MySQL Workbench、Navicat 或命令行):
    mysql -h 宿主机IP -P 3306 -u root -p
    • 输入密码 root,验证是否成功连接。

注意事项

  1. 数据持久化

    • 使用 docker volume inspect mysql-data 查看数据卷位置。
    • 删除容器时,添加 -v 参数会同时删除数据卷(慎用):

  2. 安全建议

    • 生产环境中避免使用简单密码(如 root)。
    • 限制 root 用户的远程访问权限(非必要不开放 %)。
  3. 端口冲突

    • 若宿主机 3306 端口被占用,可修改映射端口(如 -p 3307:3306)。

总结

通过上述步骤,MySQL 8.0.29 已在 Docker 中成功运行,并支持外部连接与旧版客户端兼容。数据持久化配置确保数据库内容在容器重启后不丢失。

你可能感兴趣的:(docker)