Windows 宿主机访问 VirtualBox 虚拟机中创建的 docker 容器中的 mysql8.0 的数据

devtools/2024/9/25 0:17:22/

一、场景需求

在开发环境中,一般使用 windows 系统进行开发,但需要在 linux 系统中创建运行 mysql8.0 的 docker 容器中进行测试(win10特定版本或win11才能安装 docker),为了方便还需要在 windows 系统中通过 SQLyog 工具查询 docker 容器中的数据库。

实际场景中未必遇到这种情况,这里仅记录自己实现的过程,以及踩过的坑!

 二、实现思路

1、由于 linux 系统能更好的支持 docker 容器,所以windows 安装 virtualBox 虚拟机,virtualBox 安装 linux(centos7版)系统,然后在 centos7 中创建 mysql 容器

2、在window 上运行 SQLyog 客户端,查询 docker 容器中的数据库

三、相关步骤及配置

1、安装 VirtualBox 及centos7 系统(略去具体安装方法)

centos7镜像可到阿里云镜像站获取:centos-7-isos-x86_64安装包下载_开源镜像站-阿里云

注意:

①最好使用DVD及Everything版本,否则可能会导致安装虚拟机增强功能失败。我最开始使用MInimal版本,增强功能始终安装不上,折腾了我一下午+一晚上。

②Centos7 安装完成后,将网络的连接方式改为【桥接网卡】,以便宿主机和虚拟机能相互ping通

2、Centos7 中安装 docker(略去具体安装方法)

可参考:Install Docker Engine on CentOS | Docker Docs

注意:官网给出的镜像路径是国外网址,拉取镜像经常超时,所以添加镜像仓库时,最好使用阿里云的镜像仓库路径

//docker 官网的镜像仓库路径
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo//国内用户需要添加阿里云的镜像仓库路径
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3、Centos7 中安装运行 Mysql8 的 docker 容器

以数据卷的形式创建及启动,以便保存 docker 容器中的数据。

docker run --name m1 -e MYSQL_ROOT_PASSWORD=1 -v /root/mysqlData:/var/lib/mysql --privileged=true -d -p 3306:3306 mysql//--name test 为容器指定一个名称(可替换test为自己喜欢的名称)。
//-e MYSQL_ROOT_PASSWORD=1 设置MySQL的root密码。你应该替换1为你的实际密码。
//-d 使容器在后台运行。
//mysql:latest 是要运行的MySQL镜像和标签(在这里是最新版本) 
//以数据卷的形式,创建并启动mysql容器容器内的mysql数据不会因为容器的删除而被删除
//-v /root/mysqlData:/var/lib/mysql:将数据卷/root/mysqlData映射到容器的/var/lib/mysql目录
//-p 3306:3306:将容器的3306端口映射到主机的3306端口
//--privileged=true: 使容器内的root拥有真正的root权限,解决挂载目录没有权限的问题

 4、在 docker 容器中新增数据test及表user

5、在 Windows 系统中运行 SQLyog 客户端,连接 docker 容器中的数据库

注意:如果遇到以下错误,则是 SQLyog 版本和docker容器中的mysql版本不匹配的原因。

报错原因:客户端不支持服务器要求的认证协议。这可能是因为客户端版本太旧,不支持服务器所使用的新认证协议。

解决方法:升级客户端版本或创建用户时指定使用旧的认证协议

alter USER 'username'@'hostname' IDENTIFIED WITH mysql_native_password BY 'password';-- 将 username 改为 root
-- 将 hostname 改为 % 和 localhost
-- 将 password 改为数据库密码-- 具体sql语句如下:
alter USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '1';
alter USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '1';-- 刷新权限
FLUSH PRIVILEGES;


http://www.ppmy.cn/devtools/46475.html

相关文章

什么是室内外一体化定位

室内外一体化定位是一种技术,它允许在室内外环境中对设备或人员进行连续、无缝的定位跟踪。这种技术结合了多种定位技术的优势,以克服单一技术在室内外环境中可能遇到的局限性。 室内外一体化定位通常涉及以下几种技术: 1. 卫星定位系统&am…

【iOS】UI学习(二)

UI学习&#xff08;二&#xff09; 进度条和滑动条步进器与分栏控件警告对话框和提示等待器UITextFieldUITextField控件UITextFieldDelegate协议 UIScrollView布局子视图手动布局子视图自动布局子视图 进度条和滑动条 下面通过一个程序来讲解该内容&#xff1a; #import <…

Golang | Leetcode Golang题解之第131题分割回文串

题目&#xff1a; 题解&#xff1a; func partition(s string) (ans [][]string) {n : len(s)f : make([][]int8, n)for i : range f {f[i] make([]int8, n)}// 0 表示尚未搜索&#xff0c;1 表示是回文串&#xff0c;-1 表示不是回文串var isPalindrome func(i, j int) int8…

今日份动态规划学习(二维01背包+01背包变形)

目录 P1877 [HAOI2012] 音量调节 P1877 [HAOI2012] 音量调节 题解&#xff1a;一个入门级别的01背包问题&#xff0c;首先就是为什么能看出是01背包&#xff0c;因为只有两种状态&#xff0c;要不增大音量&#xff0c;要不减小音量&#xff0c;和01背包的选与不选非常近似。但…

[Linux系统编程]文件重定向dup和dup2

一.dup和dup2 实现重定向 1.文件描述符表 操作系统在管理文件时&#xff0c;会管理一张文件描述符表&#xff0c;根据打开的文件&#xff0c;分配一个文件描述符(int)&#xff0c;根据该文件描述符&#xff0c;锁定指向该文件的指针&#xff0c;从而索取文件。 2.重定向 在li…

FlyMcu串口下载STLINK Utility

一、FlyMcu程序烧录软件 1、可以通过串口给STM32下载程序&#xff0c;如果没有STLINK&#xff0c;就可以用这个软件通过串口下载程序&#xff0c;和STC的51单片机的烧录软件STC-ISP一样&#xff0c;通过串口给单片机下载程序 2、创建串口下载所需要的HEX文件 3、选择串口和波…

Git | Git中不同颜色的含义

如是我闻&#xff1a; 在 Git 中&#xff0c;不同的颜色用来表示不同类型的更改&#xff1a; 红色&#xff1a;表示删除&#xff08;删除的行或文件&#xff09;。绿色&#xff1a;表示增加&#xff08;新增加的行或文件&#xff09;。蓝色&#xff1a;表示修改&#xff08;文…

【LeetCode 随笔】面试经典 150 题【中等+困难】持续更新中。。。

文章目录 71.【中等】简化路径155.【中等】最小栈150.【中等】逆波兰表达式求值224.【困难】基本计算器2.【中等】两数相加 &#x1f308;你好呀&#xff01;我是 山顶风景独好 &#x1f495;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01; &#x1f495;希…