使用docker搭建mysql

最近新换了电脑,本地没有mysql服务了,想了想,决定使用docker装个mysql服务。
在这里插入图片描述

1. 下载docker desktop

1.1 下载

点此下载docker desktop

1.2 安装

重启后,点掉了一个框子(忘记截图了,-_-||),之后出现了这个弹框。
在这里插入图片描述

大概看了一下,是说要去链接的那个网站下一个内核然后再重启。我这里是下载了,不是所有人都需要下载,弹出此框就去下载就好。

1.3 修改源(国内源速度快)

在这里插入图片描述将下述代码粘入即可(实际只加了一个registry-mirrors,可以根据自己的需要调整)

{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "registry-mirrors": ["http://hub-mirror.c.163.com"],
  "experimental": false,
  "features": {
    "buildkit": true
  }
}

1.4 测试安装结果

启动后,效果如下(中间有几部省略了。。。)
在这里插入图片描述此时,在任意处按住ctrl+鼠标右键,选择【在windows终端打开】或者【powershell?差不多叫这个】,总之打开命令行窗口:
在这里插入图片描述输入:

docker run hello-world

显示以下内容,则表示docker安装成功
在这里插入图片描述

2. 安装mysql

2.1 下载mysql

想要下载mysql镜像,同上1.4步,打开命令行窗口,输入以下命令:

docker pull mysql

注意,这里如果要拉其他版本的mysql,应该使用如下命令(以mysql5.7为例)

docker pull mysql:5.7

2.2 启动mysql

待上面镜像下载完成后,输入以下命令:

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

如下,代表启动成功
在这里插入图片描述

2.3 连接mysql并创建外部用户

1. 打开docker的mysql容器客户端

在这里插入图片描述打开后:
在这里插入图片描述
2.连接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用户授予了所有权限

2.4 测试安装结果

启动本地的navicat,连接到docker容器的mysql
在这里插入图片描述至此,测试完成,安装成功:
在这里插入图片描述

附1:Docker Desktop 的数据卷位置

docker的mysql做迁移时,需要找到它的数据卷,一并迁移才能做到mysql与数据一起迁移。

但使用docker volume系列命令查询到的路径只是其在linux系统下的路径,(由于使用Docker Desktop)在windows中并不知道它实际存在哪。

Docker Desktop默认数据卷位置如下:

\\wsl$\docker-desktop-data\version-pack-data\community\docker\volumes

直接使用 文件资源管理器(即:我的电脑) 粘贴到地址栏打开即可

附2:Docker启动mysql命令

首次启动:

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
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐