您好,登錄后才能下訂單哦!
這篇文章主要介紹怎么處理Docker mysql容器升級到mysql8遇到的問題,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
問題還原
原本的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工具連接報如下的錯
那么你需要修改mysql 的 my.cnf 文件:
添加:
default_authentication_plugin=mysql_native_password
因為8.0使用的是 caching_sha2_password
你可以進入容器:
docker exec -it mysql /bin/bash mysql -uroot -pxxxx use mysql select Host,User,plugin from mysql.user;
查看如下圖
為啥非要修改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’@'%' 的賬號并修改它的權限可以遠程訪問,修改命令網上找
以上是“怎么處理Docker mysql容器升級到mysql8遇到的問題”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。