MySql データベース 5.7 から 8.1 にアップグレードするときに発生する問題と解決策

1. プロジェクトの背景

Oracle MySql のセキュリティ脆弱性 CVE-2023-22056 およびその他の脆弱性が公開された後、システムの MYSQL データベースを 5.7 から 8.1 にアップグレードする準備をしています。この記事では、主にアップグレード プロセス中のいくつかの問題を紹介します。

2. アップグレード手順

(1) データベースのバックアップ

navicat を介してデータベースの構造とデータをエクスポートし、アップグレード後に新しいバージョンに復元します。

(2) MySql8.1.X版をインストールする

ダウンロード アドレス: MySQL :: MySQL コミュニティ サーバーをダウンロード

システムサービスは wamp を通じて提供されるため、オリジナルの 5.7 をベースに MySQL8.1 バージョンを追加することが主な計画ですが、ここでは wamp のマルチバージョン mysql の問題を解決する必要があります。

ここでは、MYSQL の圧縮パッケージ バージョンをダウンロードします。

Windows (x86、64 ビット)、ZIP アーカイブ 8.1.0 2億3690万

ダウンロード

(mysql-8.1.0-winx64.zip)

(1) ダウンロードした圧縮パッケージを wamp のインストール パス、つまり X:\XXX\wamp64\bin\mysql ディレクトリに解凍します。すでに 5.7.X ディレクトリがあるので、同様に 8.1.X ディレクトリを作成し、その中に圧縮パッケージを解凍します。

 (2) 関連するパスパラメータを変更する

5.7.X ディレクトリにある my.ini および wampserver.conf ファイルを mysql8.1.X ディレクトリにコピーし、my.ini ファイルのパラメータを変更します。

basedir="X:/XXX/wamp64/bin/mysql/mysql8.0.11"

datadir="X:/XXX/wamp64/bin/mysql/mysql8.0.11/data"

lc-messages-dir="X:/XXX/wamp64/bin/mysql/mysql8.0.11/share"

(3) mysql8.1.xの初期化

コマンドライン cmd を使用して mysql8.1.x の下の bin ディレクトリに入り、次のコマンドを実行します。

mysqld --initialize --console

実行後のインターフェースで見つかりました: root@localhost:XXXXXX の一時パスワードが生成されます

これは、mysql の初期化後に生成されたパスワードです。後で MySQL にアクセスするために使用します。ここにコピーする必要があります。

(4) MYSQLサービスをインストールする

wamp の場合は、wamp にサービスをインストールして開始する必要があります

wamp でない場合は、cmd で mysqld -install コマンドを直接実行すると、MySql サービスがオペレーティング システム サービスに追加されます。ただ始めてください。

(5) ログイン認証

wampの場合は、wampでメニューMysqlコンソールを開き、(3)で生成した仮パスワードを使用して以下のコマンドでログインします。

注: 初めてログインした後、コマンドを実行すると次のエラーが報告されます。

エラー 2003 (HY000): 'localhost' 上の MySQL サーバーに接続できません (10061)

これは、一時パスワードを変更する必要があることを通知するものです。その方法は次のとおりです。

mysql> 'XXXXXXXX' で識別されるユーザー 'root'@'localhost' を変更します。

また、次のコマンドを実行して権限を更新する必要があります。  

mysql> フラッシュ権限;

変更後、次のコマンドを使用します。 mysql> show Databases;

結果が表示されれば、成功したことを示します。

(3) データベースの復元

新しいMYSQLにデータベースを追加し、(1)でエクスポートしたSQLを新しいデータの下で実行します。

データベースにストアド プロシージャや関数が存在する場合、実行に失敗する可能性があります。その場合は、my.ini の [mysqld] に log_bin_trust_function_creators=1 を追加し、サービスを再起動してから再度インポートする必要があります。

(4) システム接続データベース

ユーザー、ホスト、データベースの権限を設定した後、システムはプログラムを通じてデータベースにアクセスします。現時点では、システムには次の問題が発生します。

1.文字セットの不一致問題

システム统报错:SQLSTATE[HY000] [2054] サーバーはクライアントに不明な文字セットを送信しました。開発者に報告してください

理由: MySQL 8 のデフォルトの文字セットは utf8mb4 であり、システムは utf8 を使用します。

解決策: my.ini ファイルの [mysqld] の下に次の 2 行を追加する必要があります。

文字セットサーバー = utf8mb4

照合サーバー = utf8mb4_unicode_ci

2. ID 認証の問題

システム统报错:SQLSTATE[HY000] [2054] サーバーはクライアントに不明な認証方法を要求しました

理由: MySQL8 のユーザーの認証タイプ (認証タイプ) がデフォルトで sha2 パスワードをキャッシュするため、エラーが発生するため、ユーザー権限の認証方法を mysql_native_password の認証方法に変更する必要があります。

解決策: MYSQL コンソールで 2 つのステップ (1) を実行します。

mysql>「XXXXXXXX」による mysql_native_password で識別されたユーザー「root」@「%」を変更します。

mysql>フラッシュ権限;

(2) my.inファイルの[mysqld]以下に追加

default_authentication_plugin=mysql_native_password

 

おすすめ

転載: blog.csdn.net/hongdi/article/details/131995416