Docker安装MySQL 8.0.17 并挂载数据及配置文件,修改时区

一般来说是不需要手动指定MySQL挂载卷,因为mysql会自动挂载,

通过 dokcer inspect 你的容器名称 可以查看容器已挂载的路径 /var/lib/docker/volumes/855a71109c9ac92a8a9243cc5058aaa41******

如果删除了容器,可以在重新run一个mysql的时候把“/var/lib/docker/volumes/855a71109c9ac92a8a9243cc5058aaa41******”这个挂上去,这样以前的数据也可以使用,

如果在run的时候手动指定挂载卷,则mysql的数据会以指定的目录挂载

1:下载镜像

docker pull mysql:8.0.17

2:启动

# 运行mysql命名容器名称为mysql并且设置root账号初始密码为root
docker run  -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD="root" -d mysql:8.0.17

3:确定mysql配置文件路径

#进入docker容器,mysql为刚安装的容器名称
docker exec -it mysql bash

# 查找Docker内,MySQL配置文件my.cnf的位置
mysql --help | grep my.cnf

 4:创建本地路径并挂载Docker内数据

mkdir -p /home/data/mysql/conf && mkdir -p /home/data/mysql/data
# 将容器的配置复制到服务器
docker cp mysql:/etc/mysql/my.cnf /home/data/mysql/conf/my.cnf
# 修改字符集
vim /home/data/mysql/conf/my.cnf
character-set-server=utf8

5:重新创建容器

docker run --name mysql 
-p 3306:3306
-v /home/data/mysql/conf/my.cnf:/etc/mysql/my.cnf
-v /home/data/mysql/data:/var/lib/mysql
-v /home/data/mysql/log:/logs
-e MYSQL_ROOT_PASSWORD=123456
--restart=always
-d mysql:8.0.17
docker inspect mysql

查看已挂载的卷就是指定的目录了

 

6:到此mysql已经创建完毕,可以远程连接数据,创建测试数据库"test"

7:查看挂载的本地data目录下是否有新建的数据库“test”,有说明挂载成功

8:移除刚创建的容器,看看本地data数据盘,"test"数据是否依然存在

9:重新部署mysql数据库docker容器,远程连接数据库,发现数据库依然存在"test"数据库,说明数据持久化成功

10:修改时区

vim /home/data/mysql/conf/my.cnf
添加 default-time-zone = '+08:00'

重启docker中的mysql容器即可,不是docker中的mysql重启mysql服务即可

docker restart your_mysql_name

再次进入mysql中查看当前时间和时区

修改时区参考 https://blog.csdn.net/qq_28018283/article/details/80109290

原文地址:https://www.cnblogs.com/sheseido/p/12708864.html