docker部署mysql8

docker部署mysql8

   运维菜鸟     2020年7月11日 07:47     176

1、拉取mysql镜像

docker pull mysql

使用docker images查看是否已经拉取镜像。

1.png

 

2、运行mysql镜像

(1)不建立目录映射

docker run –p 3307:3306 --name test_mysql –e MYSQL_ROOT_PASSWORD=123456 –d mysql

-p 这里创建了容器和物理主机的映射。上边就是物理主机的3307和容器的3306建立了映射,这时我们要访问的就是物理机的3307端口。

当然也可以不建立映射,那么外边就无法访问mysql容器了。最好在运行mysql的时候就映射端口,否则后边再更改比较麻烦。

--name,给容器起了别名,不添加也可以,系统会自动创建一个名字。

-e 配置信息,这里就是给root用户添加密码。

-d 后台执行

上边命令并没有映射目录,目录会自动创建在/var/lib/docker/volumes/下。

查看docker中运行的容器

2.png

使用命令docker inspect be1672307b2e 查看容器详细信息,可以看到挂载信息。

3.png

 

当关闭容器并且删除容器后,并不会删除这个存储卷。等再次运行mysql镜像后,可以直接挂载这个存储卷,里边的信息都会存在

docker run -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 –d  -v /var/lib/docker/volumes/5743ed8ea7828e09b9d2b572ef8d5aacd4aef3e89038c7a77c2d53b3a96f369c/_data/:/var/lib/mysql/ newmysql

物理机的目录/var/lib/docker/volumes/5743ed8ea7828e09b9d2b572ef8d5aacd4aef3e89038c7a77c2d53b3a96f369c/_data/和容器的/var/lib/mysql创建了映射。

 

(2)建立目录映射

docker run -p 3308:3306 --name the_mysql \

-v /root/docker/mysql/conf:/etc/mysql \

-v /root/docker/mysql/logs:/var/log/mysql \

-v /root/docker/mysql/data:/var/lib/mysql \

-v /root/docker/mysql/mysqlfiles:/var/lib/mysql-files \

-e MYSQL_ROOT_PASSWORD=123456

-d  mysql

上边就将mysql的conf和logs和data还有一个mysql-files和物理主机建立了映射。

 

3、进入mysql容器

4.png

docker exec –it abed7c58bdb5 bash

这样就进入了mysql容器。

 

4、连接mysql

这里在连接mysql的时候一定要注意客户端的版本。否则会出现问题。

mysql.user表中的root用户的加密方式是caching_sha2_password。

所以只能使用mysql8的客户端连接,mysql5的客户端连接会报错。

可以使用命令ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';更改加密方式。


其他文章