最近新换了电脑,本地没有mysql服务了,想了想,决定使用docker装个mysql服务。
点此下载docker desktop
重启后,点掉了一个框子(忘记截图了,-_-||),之后出现了这个弹框。
大概看了一下,是说要去链接的那个网站下一个内核然后再重启。我这里是下载了,不是所有人都需要下载,弹出此框就去下载就好。
将下述代码粘入即可(实际只加了一个registry-mirrors,可以根据自己的需要调整)
{
"builder": {
"gc": {
"defaultKeepStorage": "20GB",
"enabled": true
}
},
"registry-mirrors": ["http://hub-mirror.c.163.com"],
"experimental": false,
"features": {
"buildkit": true
}
}
启动后,效果如下(中间有几部省略了。。。)
此时,在任意处按住ctrl+鼠标右键,选择【在windows终端打开】或者【powershell?差不多叫这个】,总之打开命令行窗口:
输入:
docker run hello-world
想要下载mysql镜像,同上1.4步,打开命令行窗口,输入以下命令:
docker pull mysql
注意,这里如果要拉其他版本的mysql,应该使用如下命令(以mysql5.7为例)
docker pull mysql:5.7
待上面镜像下载完成后,输入以下命令:
docker run --name mysql-dev -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
如果要启动mysql5.7,并使用本机3307端口对外,则应使用以下命令
docker run --name mysql5.7-dev -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
这里如果端口写错了,连接mysql时会报错2013
1. 打开docker的mysql容器客户端
mysql -u root -p
注意:这里的密码输入刚才上面设置的初始密码(见2.2),我这里是123456
3. 创建外部用户
CREATE USER admin@'%' IDENTIFIED WITH mysql_native_password BY '123456';
此处,创建了用户名为admin,密码为123456的外部用户
4. 给外部用户授权
GRANT ALL PRIVILEGES ON *.* TO admin@'%';
此处,给admin用户授予了所有权限
启动本地的navicat,连接到docker容器的mysql
至此,测试完成,安装成功:
docker的mysql做迁移时,需要找到它的数据卷,一并迁移才能做到mysql与数据一起迁移。
但使用docker volume系列命令查询到的路径只是其在linux系统下的路径,(由于使用Docker Desktop)在windows中并不知道它实际存在哪。
Docker Desktop默认数据卷位置如下:
\\wsl$\docker-desktop-data\version-pack-data\community\docker\volumes
直接使用 文件资源管理器(即:我的电脑) 粘贴到地址栏打开即可
首次启动:
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /home/docker_volume/mysql:/var/lib/mysql mysql
既要指定数据卷,有要指定mysql的初始密码,且数据卷的目录
/home/docker_volume/mysql
必须为空目录,否则会启动失败!
若数据卷不手动指定,不使用-v参数也可以。但当需要数据迁移时,需要找到mysql的数据卷目录,将需要的数据卷内容全部复制到mysql的数据卷目录之下。
数据卷的查看
数据卷的查看请使用docker volume相关方法查看,具体用法参考:
docker volume --help