1、docker拉取镜像
docker pull mysql:8.0.15
2、创建本机映射目录
mkdir -p /usr/docker/tlmall-mysql/conf && mkdir -p /usr/docker/tlmall-mysql/datadir
3、创建容器,拷贝文件
docker run --name mysql-tmp \
-p 3306:3306 -e MYSQL_ROOT_PASSWORD=root \
-d mysql:8.0.15
拷贝my.cnf配置文件到本地的映射目录
docker cp mysql-tmp:/etc/mysql/my.cnf /usr/docker/tlmall-mysql/conf
4、删除容器
docker stop mysql-tmp && docker rm mysql-tmp
5、重新创建容器,并启动
docker run --name tlmall-mysql \
-p 3306:3306 -e MYSQL_ROOT_PASSWORD=root \
--mount type=bind,src=/usr/docker/tlmall-mysql/conf/my.cnf,dst=/etc/mysql/my.cnf \
--mount type=bind,src=/usr/docker/tlmall-mysql/datadir,dst=/var/lib/mysql \
--restart=on-failure:3 \
-d mysql:8.0.15
6、解决navicat连接mysql8.x报错问题
6.1、修改mysql root用户密码的编码方式
进入mysql容器内部
docker exec -it tlmall-mysql bash
mysql -uroot -proot;
use mysql;
ALTER USER 'root'@'%' IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY 'root';
#使修改生效
flush privileges;
6.2、navicat重新连接mysql成功