MySQL 8.0 アップグレード体験

MySQL 8.0 アップグレード体験

序文

最近は 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 を参照してください。次のように、コマンドの後に wget コマンドを使用してダウンロードします。

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開始

コマンドを使用して、プロセスの実行ステータスを表示できます。正常な場合、出力は次のようになります。

/usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --log-error=/var/log/mysql/error.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock

3. ユーザーを作成し、権限を設定します。

MySQL 8.0.x を実際に使用すると、ユーザー認証が以前のバージョンと若干異なり、次の 3 つのステップに分ける必要があることがわかります。

  1. ユーザーを作成します。
  2. 権限を割り当てます。
  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 をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL 5.7 の Docker バージョンを MySQL 8.0.13 にアップグレードし、データを移行する
  • MySql5.x を MySql8.x にアップグレードする方法と手順

<<:  HTML でスクロールバーを非表示にしたり削除したりする方法

>>:  Reactスロットの使い方

推薦する

Mysql通信プロトコルの詳細な説明

1.Mysql接続方法MySQL 通信プロトコルを理解するには、まず MySQL サーバーへの接続に...

Windows/Mac で Docker を使用して MySQL (utf8 を含む) をインストールする

目次1. MacへのDockerのインストール2. Win 10 システムでの Docker のイン...

ウェブデザイン必携ハンドブック 216 ウェブセーフカラー

Web ページ上の色の表現は、さまざまな要因によって影響を受けます。Web ページで非常に美しい配色...

PID を作成できないために MySQL が起動できない問題を解決する方法

問題の説明MySQL 起動エラー メッセージは次のとおりです。 mysqld を起動します (sys...

Dockerはイメージ名とTAG操作の名前を変更します

docker イメージを使用する場合、以下に示すように、REPOSITORY と TAG の両方が ...

Tomcatソースコードをideaにインポートする方法

目次1. Tomcatコードをダウンロードする2. ダウンロード後のディレクトリ構造3. ソースコー...

MySQL sql_modeの適切な設定に関する詳細な説明

MySQL sql_modeの適切な設定sql_mode は見落とされやすい変数です。デフォルト値は...

カンマで区切られたmysqlの分割関数の実装

1: 文字列を区切るためのストアドプロシージャを定義する 区切り文字 $$ `mess`$$ を使う...

Windows10 での MySQL msi インストール チュートリアル (画像とテキスト付き)

1. ダウンロード1. MySQL msi 公式 Web サイトから最新のダウンロードをクリックす...

MySQL 5.7 をバイナリモードでインストールし、Linux でシステムを最適化する手順

この記事では主に、MySQL バイナリ パッケージのインストール/起動/シャットダウンのプロセスを紹...

登録フォームのデザインルール

随分前に「Patterns for Sign Up & Ramp Up」を読み終えました。今...

Vue3は画像拡大鏡効果を実現します

この記事の例では、画像拡大鏡効果を実現するためのVue3の具体的なコードを参考までに共有しています。...

CSSレイアウトで中央揃えレイアウトを実現する方法

1. 親コンテナーをテーブルに設定し、子をインライン要素に設定します。テキストを表示するサブコンテン...

CSS 垂直センタリングの代替実装コードの詳細な説明(非従来型)

序文ご存知のとおり、「CSS で要素を垂直方向に中央揃えするにはどうすればよいか」という質問は、すで...

MySQL のユーザー権限を照会する方法の概要

MySQLユーザー権限を表示する2つの方法を紹介します1. MySQL grantsコマンドを使用す...