序文最近は Fighting プロジェクトで忙しく、執筆が少し滞ってしまいましたが、これは本当によくありません。 たまたま MySQL5.7.33 から MySQL8.0.x にアップグレードする必要に迫られたので、落とし穴を避けるためにアップグレード プロセス全体を記録しました。 背景の概要: ローカル Docker コンテナで使用される MySQL は 5.7.33 (イメージ システムは Ubuntu 16.04 を使用) ですが、新しいプロジェクトではオンラインで MySQL 8.0 を使用します。オンラインからエクスポートされた SQL ファイル (テーブル構造 + データ) には、下位バージョンの MySQL では使用されない文字エンコードが含まれています。インポートするとエラーが発生します。発生した文字セット エラーは次のとおりです。 - 不明な照合順序: 'utf8mb4_0900_ai_ci' しばらく探した後、落ち着いて 2 つのアイデアを思いつきました。1 つは私が自滅的な解決策と呼ぶもので、もう 1 つは過激な解決策です。 名前が示すように、耳をふさぎベルを盗むことは本質的な問題を解決するのではなく、文字セットを一括で置き換えることによって、つまり、ファイル内のすべての utf8mb4_0900_ai_ci を utf8_general_ci に置き換えることによってエラーを解決します。 2 番目の方法は、文字セットをサポートできるように、オンライン MySQL バージョンとの一貫性を保つことです。 そこで、2 番目の方法を使用して、Docker コンテナ内の MySQL をアップグレードし、同時に新しいイメージをパッケージ化しました。 アップグレード プロセスは少し面倒ですが、ロジックは明確です。 1. まず、既存のバージョンの MySQL を完全にアンインストールします。次のコマンドを使用できます。 #mysqlデータファイルを削除する sudo rm -R /var/lib/mysql/ #mysql設定ファイルを削除する sudo rm -R /etc/mysql/ #mysql を自動的にアンインストールします (サーバーとクライアントを含む) sudo apt-get autoremove mysql* --purge sudo apt-get apparmor を削除します 互換性がない可能性があるため、構成ファイルを必ず削除してください。 2. deb をダウンロードし、MySQL 8.x をインストールします。公式サイト https://dev.mysql.com/repo/apt からダウンロードできます。 最新の deb ダウンロードを選択します。URL は次のとおりです。 https://dev.mysql.com/get/mysql-apt-config_0.8.20-1_all.deb を実行します。 ダウンロードが完了したら、dpkg コマンドを使用して apt ソースを更新し、インストールします。完全なコマンドは次のとおりです。 dpkg -i mysql-apt-config_0.8.20-1_all.deb apt-getアップデート apt-get install -y mysql-server 最後のコマンド実行中に、ルート パスワードといくつかの基本設定を入力するように求められます。その後、インストールを完了できます。 UbuntuにはMySQLがインストールされているので、起動方法は次のとおりです。 サービスmysql開始 コマンドを使用して、プロセスの実行ステータスを表示できます。正常な場合、出力は次のようになります。
3. ユーザーを作成し、権限を設定します。MySQL 8.0.x を実際に使用すると、ユーザー認証が以前のバージョンと若干異なり、次の 3 つのステップに分ける必要があることがわかります。
具体的な SQL ステートメントは次の通りであり、順序は厳密です。 '176serTTc8Cg' によって識別されるユーザー 'freephp'@'%' を作成します。 GRANT オプションを使用して、dev_database.* のすべての権限を 'freephp'@'%' に付与します。 権限をフラッシュします。 上記の SQL について説明します。最初の文では、パスワードが 176serTTc8Cg の freephp という名前のユーザーを作成します。% は、どのホストでも接続できることを意味します。 2 番目の文は、dev_database のすべての権限をユーザー freephp に付与することを意味します。 3 番目の文は、新しく作成された権限が有効になるように、権限をすぐに更新することです。 これで冒険は完了です。MySQL 8.0 の新機能についてはまだ調査する必要があります。それについては次回お話しします。 要約するこれで、MySQL 8.0 アップグレードの落とし穴に関するこの記事は終了です。MySQL 8.0 アップグレードの落とし穴の詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: HTML でスクロールバーを非表示にしたり削除したりする方法
入力ボックスが小さい場合、内容を入力した後に、入力内容が拡大されたプロンプト ボックスを表示したいこ...
目次バックエンド: Rails API部分フロントエンド: React部分Reactコンポーネントa...
Microsoft IE 5.0 がリリースされる前は、Web プログラミングにおける最大の課題は、...
以下のように表示されます。 bb_sbからa1、a2、a1+a2 a、a1*a2 b、a1*1.0/...
プロセスは CPU とメモリ内で実行されるプログラム コードであり、各プロセスは 1 つ以上のプロセ...
目次1. MySQLの関数の説明2. 単行関数の分類3. キャラクター機能4. 数学関数5. 日付と...
Tomcat のデフォルトのログは java.util.logging を使用しますが、これにはい...
Vue.js を使用して、クリックしてズームできる 9 グリッドの画像表示モジュールを作成しました。...
この記事では、シームレスなカルーセル効果を実現するためのVueの具体的なコードを参考までに紹介します...
興味深い発見:合計 1000 件のレコードを含むテーブルがあります。クエリ ステートメントは次のよう...
SSHPASSをインストールする最新のオペレーティング システムでは、sshpass パッケージはデ...
メタ タグは、ファイル情報を定義し、検索エンジンによる検索を容易にするために Web ページ ファイ...
成果を達成する実装コード <h1>123WORDPRESS.COM</h1>...
長い間何もしていなかった人は、努力をすると一生懸命働いていると思うようになります。 1. 問題Nav...
多くの場合、bash スクリプト内またはスクリプト自体内で直接 sudo を使用してコマンドを実行す...