Ubuntu22.04.5 + Docker + MySQL 5.7

Ubuntu22.04.5 + Docker + MySQL 5.7 安装完整流程

适用于:Ubuntu 服务器(国内环境优化版)


一、安装 Docker

🟢 1. 更新系统
复制代码
sudo apt update

🟢 2. 安装依赖
复制代码
sudo apt install -y ca-certificates curl gnupg lsb-release

🟢 3. 安装 Docker(推荐官方脚本)
复制代码
curl -fsSL https://get.docker.com | bash

👉 说明:

  • 自动安装 Docker
  • 自动配置环境(比手动稳定)

🟢 4. 启动 Docker
复制代码
sudo systemctl start docker
sudo systemctl enable docker

🟢 5. 验证安装
复制代码
docker -v

👉 看到版本号说明成功


二、准备 MySQL 数据目录

复制代码
sudo mkdir -p /data/mysql
sudo chmod -R 777 /data/mysql

👉 用于数据持久化(非常重要)


三、获取 MySQL 5.7 镜像(国内方案)

👉 由于 Docker Hub 网络问题,使用国内镜像:

复制代码
docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/mysql:5.7

🟢 转换为标准镜像名
复制代码
docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/mysql:5.7 mysql:5.7

四、启动 MySQL 容器

复制代码
docker run -d \
  --name mysql57 \
  -p 3306:3306 \
  -v /data/mysql:/var/lib/mysql \
  -e MYSQL_ROOT_PASSWORD=AAaa@123 \
  --restart=always \
  mysql:5.7

五、验证 MySQL 是否成功

🟢 1. 查看容器
复制代码
docker ps

🟢 2. 查看日志
复制代码
docker logs -f mysql57

👉 出现:

复制代码
ready for connections

🟢 3. 登录测试
复制代码
mysql -h 127.0.0.1 -P 3306 -u root -p

六、开启远程访问(可选但推荐)

进入容器:

复制代码
docker exec -it mysql57 mysql -uroot -p

执行:

复制代码
ALTER USER 'root'@'%' IDENTIFIED BY 'AAaa@123';
FLUSH PRIVILEGES;

七、数据说明(很重要)

复制代码
/data/mysql  ← 数据真实存储位置

👉 优点:

  • 容器删除 → 数据不丢
  • 可备份 / 可迁移

八、常见问题总结

❗1. docker pull 失败

👉 原因:国内网络限制

👉 解决:使用华为云镜像(上面已处理)


❗2. 端口占用
复制代码
3306 被占用

👉 解决:

复制代码
-p 13306:3306

❗3. 无法远程连接

👉 检查:

  • 防火墙
  • MySQL权限

九、最终结构

复制代码
服务器
├── Docker
│   └── mysql57(容器)
│
└── /data/mysql(数据库文件)

一句话总结

👉 在 Ubuntu 上:

复制代码
Docker = 运行环境
MySQL容器 = 数据库服务
/data/mysql = 数据存储

👉 这是标准生产部署方式

👉使用navicat也可以远程连接


删除docker的操作步骤

1、先确认一个关键问题(非常重要)

👉 你当时启动 MySQL 有没有加这个参数:-v /data/mysql:/var/lib/mysql

情况分两种:

🟢 情况1:有挂载(推荐)

✔ 数据在 /data/mysql

👉 删除容器 ≠ 删除数据(安全)

🔴 情况2:没挂载

❌ 数据在容器里

👉 删除容器 = 数据全没

👉 不确定的话可以先执行:

复制代码
docker inspect mysql57

看有没有:

复制代码
/data/mysql

2、删除 MySQL 容器(标准步骤)

🟢 1. 停止容器
复制代码
docker stop mysql57
🟢 2. 删除容器
复制代码
docker rm mysql57

💾 2、是否删除数据(你自己决定)

✔ 保留数据(推荐)

👉 什么都不用做

👉 /data/mysql 还在,之前保存的数据没有删除

❗彻底删除(重新来一套干净的)
复制代码
rm -rf /data/mysql

👉 ⚠️ 这个操作不可恢复!

相关推荐
姜太小白42 分钟前
【MySQL】 索引优化实战:解决 WHERE 等值 + IS NULL 查询,TEXT 字段报错 1167 的完整指南
数据库·mysql
张忠琳1 小时前
【NVIDIA】 NVIDIA Container Toolkit v1.19.1 — OCI 模块超深度分析之三
云原生·容器·架构·kubernetes·nvidia
liuxiaowei32 小时前
【绝版教程】新版MySQL DBA高级实战进阶班 MySQL8.0 姜承尧-腾讯数据库总监
数据库·mysql·dba
Elastic 中国社区官方博客3 小时前
将你的 Grafana Kubernetes 仪表板迁移到 Elastic Observability:相同的 PromQL,30 倍更快的查询
大数据·人工智能·elasticsearch·搜索引擎·容器·kubernetes·grafana
sg_knight4 小时前
MySQL 存储过程详解:从入门到实战
android·数据库·mysql·database·dba·关系型数据库·db
风曦Kisaki6 小时前
#企业级docker私有仓库构建:harbor仓库与阿里云镜像仓库
阿里云·docker·容器
期待着20136 小时前
docker 安装 ,在centos7.9
运维·docker·容器
Database_Cool_6 小时前
企业级多模态分析计算引擎选型:首选 AnalyticDB MySQL 向量 + SQL + 实时一体化方案
数据库·sql·mysql
宇宙第一小趴菜8 小时前
五、Oracle vs MySQL 架构深度对比笔记
mysql·oracle·架构
骑上单车去旅行8 小时前
Docker Compose 命令完全指南:从构建到运维
docker·容器·eureka