mysql容器升级_MySQL数据库之Docker mysql容器 升级到 mysql8遇到的问题

本文讲述了在尝试将Docker中的MySQL容器从旧版本升级到8.0.11时遇到的问题,包括由于数据目录挂载导致的启动失败。解决方法包括使用旧版镜像备份数据,新建容器并还原数据,以及修改新版本MySQL的认证插件。还提到了可能需要升级程序接口的MySQL驱动以匹配新版本的认证方式。
摘要由CSDN通过智能技术生成

本文主要向大家介绍了MySQL数据库之Docker mysql容器 升级到 mysql8遇到的问题 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助。

问题还原

原本的mysql 容器创建 命令如下

docker run --name mysql -v /xxxx/xxx/mysqldata:/var/lib/mysql -p xxx:3306 -d mysql:laster

数据目录被挂载到 /xxxx/xxx/mysqldata 下面 领导让升级mysql 我天真的下了一个 mysql:8.0.11最新的

mysql镜像 然后执行

docker run --name mysql -v /xxxx/xxx/mysqldata:/var/lib/mysql -p xxx:3306 -d mysql:8.0.11

创建容器 同样挂载到原本的目录 :  /xxxx/xxx/mysqldata

结果容器秒退根本无法起来    查看日志

docker logs -f -t --tail 70 mysql

日志说 大概是/xxxx/xxx/mysqldata下面的插件文件是5.7版本创建的 8.0无法启动 然后我有切回原本的 mysql:laster 镜像创建容器,又说这个目录下的文件被8.0修改无法启动,感觉这个目录就这么废了,老的镜像无法启动,新的也无法启动。

所以自己被自己的行为蠢哭了千万别再直接用新本的镜像启动容器时挂接原本的mysql目录,有同事说这样没问题,但为啥我出问题了人设有问题吗

解决方法:

用老的mysql:laster镜像连接 /xxxx/xxx/mysqldata 的备份目录,备份太重要了。启动一个mysql容器

用新的mysql:8.0.11 启动一个新的mysql 容器,挂接一个任意目录。然后通过navicat等其他工具将老的数据备份还原到新的mysql容器中。或者通过命令

$ docker exec some-mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /some/path/on/your/host/all-databases.sql 备份还原。

1、如果你的新本mysql还原成功了你用 navicate工具连接报如下的错

8326cffc1e178a8287f9f36efd03738da877e833.jpg

那么你需要修改mysql 的 my.cnf  文件:

添加:

default_authentication_plugin=mysql_native_password

因为8.0使用的是 caching_sha2_password

你可以进入容器:

docker exec -it mysql /bin/bash

mysql -uroot -pxxxxuse mysqlselect Host,User,plugin from mysql.user;

查看如下图

QQ截图20180504095808.png

为啥非要修改caching_sha2_password 为 mysql_native_password ,我也不知道只是我的8.0.11的mysql容器启动后,程序接口任然无法正常使用报错:无法连接不支持的认证方法,这个时候可能需要升级程序接口的mysql驱动 ,但是懒得升,只能修改caching_sha2_password 为 mysql_native_password 结果就可以正常连接了。

3.一点docker 命令记录一下

重容器中拷贝文件到宿主机 不需要容器启动

docker cp 容器:/etc/mysql/my.cnf  /home/xxx/my.cnf

将宿主机的文件拷贝容器里面的目录下 会覆盖老的文件

docker cp /home/xxx/my.cnf   容器:/etc/mysql/如果你特别牛逼程序中是用root来连接账号的那你可能还需要创建一个 ‘root’@'%' 的账号并修改它的权限可以远程访问,修改命令网上找

本文由职坐标整理并发布,希望对同学们学习MySQL有所帮助,更多内容请关注职坐标数据库MySQL数据库频道!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值