ホームページ > データベース > mysql チュートリアル > Docker mysql コンテナを mysql8 にアップグレードするときに発生した問題を解決する

Docker mysql コンテナを mysql8 にアップグレードするときに発生した問題を解決する

coldplay.xixi
リリース: 2020-12-23 09:30:06
転載
2518 人が閲覧しました

mysql ビデオ チュートリアル このコラムでは、Docker mysql コンテナを mysql8 にアップグレードするときに発生する問題を紹介し、それを効果的に解決する方法を説明します。

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 が正常に復元され、ナビゲート ツールを使用して接続すると、次のエラーが報告されます。

Docker mysql コンテナを mysql8 にアップグレードするときに発生した問題を解決する

その後、私の SQL を変更する必要があります。 mysql の .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;
ログイン後にコピー

下の図を参照してください

Docker mysql コンテナを mysql8 にアップグレードするときに発生した問題を解決する

なぜ 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 にアップグレードするときに発生した問題を解決するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:jianshu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート