宿主机和虚拟机访问Docker容器里的MySQL

文章目录

  • [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.100ping 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;

  • 执行语句

    sql 复制代码
    insert 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 容器化部署的高效性与灵活性,结合华为云镜像加速提升了镜像拉取效率,为后续微服务或应用集成提供了可靠的数据库支撑环境,具备良好的工程实践价值。
相关推荐
2501_941149791 小时前
人工智能与机器学习:开启智能新时代
mysql
合作小小程序员小小店2 小时前
web网页开发,在线%宠物销售%系统,基于Idea,html,css,jQuery,java,ssh,mysql。
java·前端·数据库·mysql·jdk·intellij-idea·宠物
合作小小程序员小小店2 小时前
web网页开发,在线%档案管理%系统,基于Idea,html,css,jQuery,java,ssh,mysql。
java·前端·mysql·jdk·html·ssh·intellij-idea
猿小喵3 小时前
浅谈MySQL的redo日志
数据库·mysql
o***Z4483 小时前
Docker镜像安全扫描
安全·docker·容器
l***O5204 小时前
Docker微服务
docker·微服务·容器
用户7227868123444 小时前
MySQL高级运维核心技术:事务处理、安全管理与性能优化
mysql
1***Q7844 小时前
Docker计算机视觉应用
计算机视觉·docker·容器
x***J3484 小时前
Docker数据挖掘开发
docker·容器·数据挖掘