文章目录
- [1. 实战概述](#1. 实战概述)
- [2. 实战步骤](#2. 实战步骤)
-
- [2.1 宿主机和虚拟机](#2.1 宿主机和虚拟机)
-
- [2.1.1 宿主机 - Windows 11](#2.1.1 宿主机 - Windows 11)
- [2.1.2 虚拟机 - openEuler 22.03](#2.1.2 虚拟机 - openEuler 22.03)
- [2.1.3 宿主机访问虚拟机](#2.1.3 宿主机访问虚拟机)
- [2.2 查看Docker版本](#2.2 查看Docker版本)
- [2.3 查看Docker状态](#2.3 查看Docker状态)
- [2.4 拉取MySQL镜像](#2.4 拉取MySQL镜像)
- [2.5 在容器里运行MySQL](#2.5 在容器里运行MySQL)
- [2.6 在容器里访问MySQL](#2.6 在容器里访问MySQL)
-
- [2.6.1 进入容器终端](#2.6.1 进入容器终端)
- [2.6.2 进入MySQL客户端](#2.6.2 进入MySQL客户端)
- [2.6.3 创建数据库与表](#2.6.3 创建数据库与表)
- [2.6.4 退出MySQL客户端](#2.6.4 退出MySQL客户端)
- [2.6.5 退出容器终端](#2.6.5 退出容器终端)
- [2.7 虚拟机访问容器里的MySQL](#2.7 虚拟机访问容器里的MySQL)
-
- [2.7.1 进入MySQL客户端](#2.7.1 进入MySQL客户端)
- [2.7.2 使用mysql数据据](#2.7.2 使用mysql数据据)
- [2.7.3 授权任意主机访问MySQL](#2.7.3 授权任意主机访问MySQL)
- [2.7.4 给学生表插入记录](#2.7.4 给学生表插入记录)
- [2.7.5 查看学生表全部记录](#2.7.5 查看学生表全部记录)
- [2.8 宿主机访问容器里的MySQL](#2.8 宿主机访问容器里的MySQL)
-
- [2.8.1 启动宿主机上的Navicat](#2.8.1 启动宿主机上的Navicat)
- [2.8.2 创建MySQL连接](#2.8.2 创建MySQL连接)
- [2.8.3 查看学生表记录](#2.8.3 查看学生表记录)
- [3. 实战总结](#3. 实战总结)
1. 实战概述
- 本次实战围绕Docker容器化MySQL展开,在openEuler虚拟机中拉取MySQL 8.0镜像并创建容器,完成数据库、表的创建及数据插入。通过授权配置,实现了虚拟机本地及Windows宿主机(Navicat)对容器内MySQL的跨主机访问,验证了Docker容器化应用的便捷性与可访问性。
2. 实战步骤
2.1 宿主机和虚拟机
2.1.1 宿主机 - Windows 11
- 查看宿主机情况

2.1.2 虚拟机 - openEuler 22.03
- 查看虚拟机情况

2.1.3 宿主机访问虚拟机
- 执行命令:
ping 192.168.1.100和ping euler

2.2 查看Docker版本
- 执行命令:
docker version

2.3 查看Docker状态
- 执行命令:
systemctl status docker

2.4 拉取MySQL镜像
-
执行命令:
docker pull mysql:8.0

-
结果说明:从终端输出可知,MySQL 8.0镜像已成功拉取:"Pull complete"提示各镜像层下载完成,最终"Downloaded newer image"确认获取到最新的8.0版本镜像。当前该镜像已存于本地Docker仓库,可直接用于创建MySQL容器,无需重复拉取。
-
执行命令:
docker images

2.5 在容器里运行MySQL
-
执行命令:
docker run -d --name mysql-server -e MYSQL_ROOT_PASSWORD=903213 -p 3306:3306 mysql:8.0

-
结果说明:执行此命令后,输出长字符串容器ID,表明MySQL 8.0容器已成功创建并后台运行。容器命名为
mysql-server,映射宿主机3306端口至容器3306端口,MySQL root用户密码设为903213,可通过192.168.1.100:3306访问数据库。
2.6 在容器里访问MySQL
2.6.1 进入容器终端
- 执行命令:
docker exec -it mysql-server /bin/bash

2.6.2 进入MySQL客户端
- 执行命令:
mysql -uroot -p903213

2.6.3 创建数据库与表
- 执行语句:
create database test character set utf8mb4;

- 执行命令:
use test;

- 执行语句:
create table t_student(id int, name varchar(10), gender varchar(2), age int);

2.6.4 退出MySQL客户端
- 执行命令:
quit;

2.6.5 退出容器终端
- 执行命令:
exit

2.7 虚拟机访问容器里的MySQL
2.7.1 进入MySQL客户端
- 执行命令:
mysql -h euler -uroot -p903213

2.7.2 使用mysql数据据
- 执行命令:
use mysql;

2.7.3 授权任意主机访问MySQL
- 执行命令:
select user, host from user;

- 执行语句:
alter user 'root'@'%' identified by '903213';

- 结果说明 :执行
alter user 'root'@'%' identified by '903213';语句后,返回"Query OK, 0 rows affected",说明成功修改了允许任意主机访问的root用户密码为903213。该操作无数据行受影响(仅更新用户权限信息),现在root用户可从任意主机用新密码登录MySQL。 - 执行语句:
grant all privileges on *.* to 'root'@'%' with grant option;

- 结果说明 :执行
grant all privileges on *.* to 'root'@'%' with grant option;语句后,返回"Query OK, 0 rows affected",说明成功为允许任意主机访问的root用户授予了所有数据库的全部权限,且该用户拥有权限授予能力。操作未影响数据行(仅更新权限配置),现在root可从任意主机对所有数据库执行任意操作。 - 执行语句:
flush privileges;,刷新权限

2.7.4 给学生表插入记录
-
执行命令:
use test;

-
执行语句
sqlinsert into t_student values (1, '张小刚', '男', 20), (2, '李灵玉', '女', 22), (3, '王小虎', '男', 19), (4, '赵灵芝', '女', 21), (5, '孙天宇', '男', 23);
2.7.5 查看学生表全部记录
- 执行语句:
select * from t_student;

2.8 宿主机访问容器里的MySQL
2.8.1 启动宿主机上的Navicat
- 启动Navicat

2.8.2 创建MySQL连接
- 演示创建
docker-mysql连接

2.8.3 查看学生表记录
- 点开
test数据库,双击t_student表

3. 实战总结
- 本次实战在 openEuler 虚拟机中成功部署 Docker 化的 MySQL 8.0 容器,通过端口映射(3306:3306)和用户权限配置(
root@%),实现了虚拟机本地及 Windows 宿主机(通过 Navicat)对容器数据库的远程访问。完成了数据库、表的创建与数据插入,并验证了跨主机连接的稳定性与安全性。整个过程体现了 Docker 容器化部署的高效性与灵活性,结合华为云镜像加速提升了镜像拉取效率,为后续微服务或应用集成提供了可靠的数据库支撑环境,具备良好的工程实践价值。