MySQL镜像

如果你没有安装Docker你可以参考这篇文章安装Docker

我们去Docker的镜像市场搜索MySQLhttps://registry.hub.docker.com/search?q=MySQL&type=image

搜索到的第一个mysql点击进去,再点击Tags我们就能看见他的版本列表了。latest则是它最新的版本。

image-20201002211600650

Docker安装MySQL

下载镜像文件

docker pull是安装镜像命令,后面跟镜像名字比如docker pull mysql,这里安装的mysql会是最新的版本。如果要安装之前的版本只要在镜像名的后面加:和版本号,就能安装指定的版本镜像了。

这里我们安装的是版本5.7的mysql。

sudo是最高权限root,如果你是在root用户,命令之前可以不加sudo

1
sudo docker pull mysql:5.7

安装完成后,输入命令检查是否安装成功

1
sudo docker images

创建实例并启动

1
2
3
4
5
6
docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7

参数说明

  1. --name mysql:是为当前启动的容器命名为mysql,名字可以自己设置。
  2. -p 3306:3306:将容器的3306端口映射到虚拟机的3306端口。
  3. -v /mydata/mysql/log:/var/log/mysql-v 目录挂载,将日志件夹挂载到虚拟机。
  4. -v /mydata/mysql/data:/var/lib/mysql:将配置件夹挂载到虚拟机。
  5. -v /mydata/mysql/conf:/etc/mysql:将配置文件夹挂载到虚拟机。
  6. -e MYSQL_ROOT_PASSWORD=root:初始化root用户的密码为root
  7. -d mysql:5.7-d 后台模式启动镜像,这里是后台模式启动我们下载的5.7版本的mysql镜像。

docker容器文件挂载与端口映射

启动成功

启动成功后会出现如图a9c338131a...一长串的英文数字。

我们输入下面的命令检查,第一列CONTAINER ID就是启动出现的代码、IMAGE是启动的镜像、COMMAND是启动命令、CREATED是创建时间、STATUS是运行状态、PORTS0.0.0.0:3306->3306/tcp, 33060/tcp,将容器的3306端口映射到虚拟机的3306端口、最后的NAMES就是我们之前启动容器的命名mysql

1
sudo docker ps

测试连接

在主机测试连接,我们这里就用命令行测试,也可以用其他数据库软件。如下图连接成功!

192.168.2.102为虚拟机的IP地址

1
mysql -u root -h 192.168.2.102 -proot

MySQL容器

进入mysql容器

1
sudo docker exec -it mysql bash

出现root@a9c338131af6:/# ,就是相当于我们以root用户访问进入了mysql容器。

输入下面命令查看mysql容器安装在哪里。

1
whereis mysql

查看mysql容器内的日志

1
cd /var/log/mysql/

在容器外查看挂载文件夹

因为我们在前面挂载了容器内部的配置在虚拟机内。那么我们其实可以直接在虚拟机内,对挂载部分进行修改配置了。我们先退出容器输入exit。我们再输入下面的命令就能看到在虚拟机内挂载的文件了。

1
cd /mydata/mysql/

这样我们就能很方便的在外部虚拟机观察日志和修改配置文件等其他操作。

配置conf文件

我们直接创建并配置conf文件

1
vi /mydata/mysql/conf/my.conf

然后键盘按下insert键插入下面的内容。

1
2
3
4
5
6
7
8
9
10
11
12
13
[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf-8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve

最后我们重启mysql容器。稍等会容器就重启成功了,配置也会映射到容器内部。也可以进入容器内部检查下。

1
sudo docker rstart mysql