数据库版本升级(5.7.31–>5.7.44)
前期准备
1.停止正在使用数据库的项目
2.确保磁盘剩余足够空间备份转移
1.备份原数据库
# /path/to/backup.sql 是宿主机的文件夹路径,确保有充足磁盘空间和读写权限
docker exec -it <your_mysql_container_name> mysqldump -u root -p<password> --all-databases > /path/to/backup.sql
2.用docker命令创建新容器
# 挂载了数据文件夹/var/lib/mysql,配置文件夹/etc/mysql,mysqld文件夹/var/run/mysqld 以及一个备份文件夹/home/mysql/backup
docker run -d --name mysql5.7 -p 3306:3306 --restart=always \
-v /home/mysql/data:/var/lib/mysql \
-v /home/mysql/conf:/etc/mysql \
-v /home/mysql/logs:/var/log/mysql \
-v /home/mysql/backup:/home/mysql/backup \
-e MYSQL_ROOT_PASSWORD=<YOUR_PASSWORD> \
mysql:5.7.44
3.恢复数据
# a.复制数据备份文件到容器内部
docker cp /path/to/backup.sql myql5.7:/home/
# b.进入容器内部
docker exec -it <容器名称> /bin/bash
# c.执行命令恢复数据
mysql -u root -p < /home/backup.sql
4.创建对应角色和用户
# 创建train角色,拥有hz_training_system数据库所有读写权限
CREATE ROLE train;
GRANT ALL PRIVILEGES ON hz_training_system.* TO train;
# 创建file角色
CREATE ROLE file;
GRANT ALL PRIVILEGES ON hz_file_server.* TO file;
# 创建training用户,授予train角色
CREATE USER training@'%' IDENTIFIED BY 'password';
GRANT train TO training;
# 创建fileserver用户,授予file角色
CREATE USER fileserver@'%' IDENTIFIED BY 'password';
GRANT file TO fileserver;
# 创建db管理员,授予两个角色
CREATE USER dbadmin@'%' IDENTIFIED BY 'password';
GRANT train, file TO dbadmin;