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

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

相关推荐
WangMingHua1112 小时前
LM Studio Docker 部署——本地大模型一键启动
docker
Jim6001 天前
【吃透 MySQL InnoDB连载】第 1 章・解密线上数据库高频故障
mysql
曲幽1 天前
别再用网页翻译看源码了!你的私人翻译神器LibreTranslate,部署避坑指南来了
python·docker·web·pot·translate·libretranslate·arogstranslate
GreatSQL1 天前
gt-checksum v4.0.0 新功能解读系列文章(4):SSL 加密连接——数据校验传输安全再升级
mysql
武子康3 天前
调查研究-183 Apple container:Mac 上用轻量 VM 跑 Linux 容器,Swift 会改写本地容器体验吗?
docker·容器·apple
云技纵横4 天前
唯一索引 INSERT 死锁实战:5 秒复现交叉插入的 S 锁循环等待
sql·mysql
沉默王二4 天前
面试官:RAG 不用向量数据库,用 MySQL 硬扛?我:100 万向量不是很轻松?
mysql·面试·ai编程
小猿姐5 天前
MySQL Top 10 热点问题 AI 运维实战:从内核诊断到云原生运维
mysql·云原生·aiops