Docker 安装 MySQL8.0

 

docker 仓库搜索mysql

docker search mysql

docker 仓库拉取mysql8.0

docker pull mysql:

查看本地仓库镜像是否下载成功

docker images mysql:8.0

备注: 因为我docker目前只有这一个镜像,我就用 docker images 查看了

安装运行mysql8.0

docker run \
  -p 3308:3306 \
  -e MYSQL_ROOT_PASSWORD=root \
  -v /home/docker/mysql/data:/var/lib/mysql:rw \
  -v /home/docker/mysql/log:/var/log/mysql:rw \
  -v /home/docker/mysql/mysql-files:/var/lib/mysql-files/ \
  --name mysql8.0 \
  --restart=always \
  -d mysql:8.0

拷贝配置文件到宿主机:

docker cp mysql8.0:/etc/mysql/my.cnf  /home/docker/mysql/conf/

停止容器:

docker stop mysql8.0

删除容器:

docker rm mysql8.0

重新执行生成容器(增加了对配置文件my.cnf的映射,直接映射,容器启动会有问题,通过执行下面-v后面的映射,最终实现数据持久化,数据存放在宿主机而不是容器内):

docker run \
  -p 3308:3306 \
  -e MYSQL_ROOT_PASSWORD=root \
  -v /home/docker/mysql/data:/var/lib/mysql:rw \
  -v /home/docker/mysql/log:/var/log/mysql:rw \
  -v /home/docker/mysql/conf/my.cnf:/etc/mysql/my.cnf:rw \
  -v /home/docker/mysql/mysql-files:/var/lib/mysql-files/ \
  --name mysql8.0 \
  --restart=always \
  -d mysql:8.0

上面代码的意思是: docker run -p 本地主机端口号:容器服务端口号 --name 容器名字 [-e 配置信息修改] -d 镜像名字

查看mysql8.0容器运行情况

docker ps 

进入mysql

根据上面查询到的容器id执行

docker exec -it mysql8.0 bash                

连接mysql

mysql -uroot -p

输入密码

切换数据库

use mysql 

使用客户端工具远程连接mysql

因为mysql8.x 版本的密码加密的方式,Navicat识别不了。先去查看mysql8.0的版本加密方式。

select host,user,authentication_string,plugin from user;

我们需要将mysql的加密方式改成 mysql_native_password。

alter user ‘root’@’%’ identified with mysql_native_password by ‘root’;(修改加密方式,复制到控制台可能单引号丢失,检查下如果丢失,手动输入)
select host,user,authentication_string,plugin from user;(查看是否将加密方式修改过来)

 然后再去naVicat 连接就好了。

posted @ 2021-06-18 15:12  zhwy524  阅读(3039)  评论(0编辑  收藏  举报