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

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

相关推荐
Yvonne爱编码3 小时前
数据库---Day 1 数据库基础
数据库·mysql·oracle
FL4m3Y4n3 小时前
MySQL索引原理与SQL优化
android·sql·mysql
guslegend3 小时前
MySQL高手第三章
数据库·mysql
spring2997923 小时前
MySQL无法连接到本地localhost的解决办法2024.11.8
数据库·mysql·adb
L1624763 小时前
MySQL 8.0 MGR + KeepAlived 生产级全流程搭建手册
数据库·mysql
Sean‘4 小时前
AKS 集群离线部署 kube-state-metrics 文档
运维·docker·容器
万象.4 小时前
docker存储卷分类与实操
docker·容器
F1FJJ5 小时前
只是想查个数据,不想装 phpMyAdmin
数据库·网络协议·容器·开源软件
spencer_tseng5 小时前
java.sql.SQLException: Unknown system variable ‘query_cache_size‘
mysql