Docker 安装 MySQL8.0
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 连接就好了。