docker search mysql
选择支持centos7版本的mysql57: docker pull centos/mysql-57-centos7
docker images
docker save -o mysql-57-centos7.tar centos/mysql-57-centos7:latest
docker load -i mysql-57-centos7.tar
--------------------------------------------------------------------------------
mysql 8
docker search mysql
docker pull mysql:latest
启动命令
docker run -p 3306:3306 --name mysql8 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
mysql -uroot -h192.168.1.247 -P3306 -p******
docker save -o mysql-8.1.0.tar mysql:latest
docker load -i /opt/dockerinstall/mysql/mysql-8.1.0.tar
docker load -i /opt/dockerfile/mysql/mysql-8.1.0.tar
参考:docker安裝mysql(8.0.20)并且指定配置文件和数据存放位置_docker启动mysql指定配置文件_Koma-forever的博客-优快云博客
升级步骤
下面是升级Docker安装的MySQL的步骤:
步骤1:备份数据
在进行升级之前,我们应该首先备份MySQL的数据,以防止数据丢失。可以使用以下命令备份MySQL容器中的数据:
docker exec -it mysql57 /bin/bash
whereis mysql
/opt/rh/rh-mysql57/root/usr/bin/mysql
ls /opt/rh/rh-mysql57/root/usr/bin/
exit 退出容器
备份数据:
docker exec -it mysql57 /opt/rh/rh-mysql57/root/usr/bin/mysqldump -uroot -p123456 dinky > dinky_backup.sql
docker exec -it mysql57 /opt/rh/rh-mysql57/root/usr/bin/mysqldump -uroot -p123456 dolphinscheduler > dolphinscheduler_backup.sql
全部导出会把mysql的库也导下来,所以需要单个库导入
停止 mysql57
docker stop mysql57
6、启动mysql8容器(指定数据卷)
mkdir -p /usr/local/mysql
docker run --privileged=true --name mysql8 -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -v /usr/local/mysql/logs:/var/log/mysql -v /usr/local/mysql/data:/var/lib/mysql -v /usr/local/mysql/conf/:/etc/mysql/conf.d -v /usr/local/mysql/mysql-files:/var/lib/mysql-files -d mysql:latest
7、拒绝连接解决方法
docker exec -it mysql8 /bin/bash
mysql -u root -p123456
密码 123456
use mysql
update user set host = '%' where user = 'root' and host='localhost';
ERROR 1062 (23000): Duplicate entry '%-root' for key 'user.PRIMARY'
select host,user from user where user = 'root';
grant all PRIVILEGES on *.* to root@'%' WITH GRANT OPTION;
flush privileges;
ALTER user 'root'@'%' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;
ALTER user 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
FLUSH PRIVILEGES;
exit; 退出mysql
exit 退出容器
登录验证
mysql -uroot -h192.168.1.245 -P3306 -p123456
mysql -uroot -h192.168.1.248 -P3306 -p123456
可以正常登录了
导入备份数据
上传备份文件
docker cp /opt/dockerfile/mysql/dinky_backup.sql mysql8:/opt/dinky_backup.sql
docker cp /opt/dockerfile/mysql/dolphinscheduler_backup.sql mysql8:/opt/dolphinscheduler_backup.sql
docker cp /opt/dockerinstall/mysql/dinky_backup.sql mysql8:/opt/dinky_backup.sql
docker cp /opt/dockerinstall/mysql/dolphinscheduler_backup.sql mysql8:/opt/dolphinscheduler_backup.sql
登录容器
docker exec -it mysql8 /bin/bash
登录mysql
mysql -uroot -p123456
#5.还原数据库
create database dinky;
use dinky;
source /opt/dinky_backup.sql;
create database dolphinscheduler;
use dolphinscheduler;
source /opt/dolphinscheduler_backup.sql;
异常问题:
ERROR 1231 (42000): Variable 'character_set_client' can't be set to the value of 'NULL'
不用处理
创建dinky用户:
use mysql
create user 'dinky'@'%' identified by '*****';
grant all privileges on dinky.* to 'dinky'@'%' with grant option;
flush privileges;
创建dolphin用户:
use mysql
create user 'dolphin'@'%' identified by '*****';
GRANT ALL PRIVILEGES ON dolphinscheduler.* TO 'dolphin'@'%';
flush privileges;
整体升级完毕。