通过docker启动mysql

一、启动mysql

1.下载mysql

docker pull mysql:5.7

# 具体可以去dockerhub中查找想要的版本

2.启动mysql

docker run    -d  -p 3306:3306  mysql:5.7  --name mysql01   -e  MYSQL_ROOT_PASSWORD="123"  -v /data/mysql/datadir:/var/lib/mysql  -v /data/mysql/my.cnf:/etc/mysql/my.cnf 

-d : 后台启动

-p:端口映射

--name:给容器起个名字

-v : 将宿主机和容器内的文件进行数据映射

-e: 指定环境变量

在实际生产环境中,通常还要加上--restart=always ,只要docker重新启动,那么容器就重新启动。

3.连接mysql

可以通过相应的数据库连接软件直接去连接启动的docker.

如果连接不上,那么可以进入容器内部:

# 进入容器内部
docker exec -it mysql01 mysql -uroot -p123 # 授权 GRANT ALL ON *.* TO 'root'@'%';
# 添加用户
ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;

更改root的密码:

 ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

 # 刷新 

flush privileges;

4.进行数据备份

通过数据卷映射是将整个mysql中的文件系统映射到宿主机上,这种情况下如果要将这个容器内的数据库数据备份后迁移到另外一台服务器上,会将整个mysql的文件系统都要迁移过去,这里面可能有一些问题,比如迁移中如果某些文件少了,就可能启动不来,或者说mysql的版本不一致,也会导致出现问题。因此,通过可以通过下面的命令来进行数据备份:

a.利用mysql的mysqldump 

mysqldump -uroot -p123  --all-databases  >  /root/mysql/test.sql

--all-databases:所有数据库和库中的表

具体的操作:(docker中进行mysql的数据备份)

 docker exec id(msyql容器id)   sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /some/path/on/your/host/all-databases.sql

备份指定库数据:

docker exec id(msyql容器id)   sh -c 'exec mysqldump databases 库名  -uroot -p"$MYSQL_ROOT_PASSWORD"' > /some/path/on/your/host/ehs.sql

备份指定库数据不要数据:

docker exec id(msyql容器id)   sh -c 'exec mysqldump   --no-data  --databases 库名  -uroot -p"$MYSQL_ROOT_PASSWORD"' > /some/path/on/your/host/ehs_test.sql

b.使用navicat进行数据备份

使用navicat进行数据备份

5.数据备份后,将数据还原

 docker exec -i some-mysql sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < /some/path/on/your/host/all-databases.sql

 6.数据mysql中数据卷持久化对应的文件目录

在docker启动后,要知道mysql(5.7)有哪些目录需要持久化。

docker内的mysql:

/var/lib/mysql   ----->./datadir   # 基础信息
/etc/mysql       ------> ./mysql   # 配置文件
/var/log    ------->  ./log        # 日志

 

posted on 2023-04-20 23:21  一先生94  阅读(2068)  评论(0编辑  收藏  举报

导航