MySQL 8.0の落とし穴の詳細な説明

MySQL 8.0の落とし穴の詳細な説明

本日、MySQL 8.0 をアップデートしました。

最初の問題: Navicatがデータベースに接続できない

インストールされたmysqlはlocalhost:3306で、すべての設定はデフォルトです。インストール後、Navicat 12を開いて新しい接続を作成し、直接エラーを報告してください。

認証プラグイン 'caching_sha2_password'

認証プラグインを読み込めませんでした

公式ドキュメント6.5.1.3 SHA-2プラグ可能認証のキャッシュを確認しました

MySQL 8.0では、デフォルトの認証プラグインとして、caching_sha2_passwordがmysql_native_passwordに置き換えられました。公式の解決策は次のとおりです。

1. サーバーを再構成して、以前のデフォルトの認証プラグイン (mysql_native_password) に戻します。

[mysqld]
デフォルト認証プラグイン=mysql_native_password

この設定により、8.0 より前のクライアントは 8.0 サーバーに接続できますが、有効な設定で作成された新しいアカウントでは caching_sha2_password によって提供される強化された認証セキュリティが利用できなくなるため、この設定は長期的または永続的なソリューションではなく、一時的な設定と見なす必要があります。

2. ルート管理アカウントの認証方法を mysql_native_password に変更します。

新しい MySQL 8.0 インストールの場合、データ ディレクトリが初期化されるときにアカウント 'root'@'localhost' が作成され、このアカウントはデフォルトで caching_sha2_password を使用します。サーバー ルートに接続し、ALTER USER を使用して、次のようにアカウント認証プラグインとパスワードを変更します。

ALTER USER 'root'@'localhost'
 mysql_native_passwordで識別
 BY 'パスワード';

この時点で、MySQL 8.0 のデフォルトの ID 検証の置き換えの問題は解決されました。

2 番目の質問: 原因: java.sql.SQLException: 不明な初期文字セット インデックス '255'...

データベースを更新した後、ローカルで小さな Java プロジェクトを開始し、データベースに接続してテスト プログラムを実行しましたが、例外がスローされました。公式ドキュメント「MySQL 8.0.1 の変更点 (2017-04-10、開発マイルストーン)」を確認したところ、バージョン 8.0.1 では Unicode 文字セットのサポートにいくつかの重要な変更が加えられ、デフォルトの文字セットが latin1 から utf8mb4 に変更されていることがわかりました。このシステムのデフォルトの collat​​ion_server および collocation_database システム変数は、latin1_swedish_ci から utf8mb4_0900_ai_ci に変更されます。

解決策: これらの変更はすべて MySQL Connector Java の新しいバージョンで処理されており、MySQL の構成は必要ありません。したがって、MYSQL バージョンをアップグレードして、5.1.6 を 5.1.44 に変更するだけで、問題は完全に解決されます。

<依存関係>
    <グループID>mysql</グループID>
    <artifactId>mysql-コネクタ-java</artifactId>
    <バージョン>5.1.44</バージョン>
  </依存関係>

質問3: インストールが完了したら、データベースを入力してデータベースを表示するか、権限を変更しようとするとエラーメッセージが表示されます。

エラー 1449 (HY000): 定義者として指定されたユーザー ('mysql.infoschema'@'localhost') が存在しません
テーブル 'mysql.role_edges' が存在しません

回避策

mysql_upgrade -u ルート -p;

質問 4: クライアントがデータベースに正常に接続した後、プロジェクト内の MySQL への pdo 接続で再度エラーが報告されたことがわかりました。

次の PDOException: SQLSTATE[HY000] [2054] サーバーは、/vendor/yiisoft/yii2/db/Connection.php:687 でクライアントに不明な認証方法 [caching_sha2_password] を要求しました

このエラーは、MySQL がデフォルトの認証プラグインとして mysql_native_password ではなく caching_sha2_password を使用しているが、クライアントが現在このプラグインをサポートしていないために発生する可能性があります。公式ドキュメント

MySQL 8.0 では、mysql_native_password ではなく caching_sha2_password がデフォルトの認証プラグインです。この変更がサーバー操作に与える影響と、サーバーとクライアントおよびコネクタとの互換性については、「優先認証プラグインとしての caching_sha2_password」を参照してください。

MySQL 8.0 では、mysql_native_password の代わりに caching_sha2_password がデフォルトの認証プラグインになります。この変更がサーバー操作およびクライアントやコネクタとのサーバー互換性にどのように影響するかについては、優先認証プラグインとしての caching_sha2_password を参照してください。

回避策

my.cnf ファイルを編集し、デフォルトの認証プラグインを変更します。

$ vi /etc/my.cnf

[mysqld]に次のコードを追加します。

デフォルト認証プラグイン=mysql_native_password

その後、mysqlを再起動します

$ サービスmysqldを再起動

ようやくウェブサイトが正常に開きました。 。 。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • MySQL 8.0 に移行する際の注意点 (要約)
  • MySQL 8.0 の新機能の落とし穴と解決策についての簡単な説明 (要約)
  • MySQL 8.0.20でNavicatをインストールして接続する方法と注意すべき点
  • JDBC を使用して Mysql 8.0.11 に接続するときに発生するさまざまなエラーを解決する方法
  • MySql 8.0 と対応するドライバー パッケージの一致に関する注意事項

<<:  Vue で親コンポーネントから子コンポーネントにデータを渡すいくつかの方法

>>:  Centos7.5でのIPアドレス設定の実装

推薦する

Vue2とVue3の兄弟コンポーネント通信バスの違いと使い方

目次vue2.x vue3.x tiny-emitterプラグインの使用Mittプラグインの使用vu...

VMwareワークステーションとデバイス/資格情報の非互換性によって発生する起動エラーについて

VMware Workstationsが仮想マシンエラーを起動する エラー レポートのリンク htt...

NodeJSプロセスがどのように終了するかについて詳しく説明します

目次序文積極的な撤退例外、拒否、および発行されたエラー信号まとめ序文NodeJS プロセスが終了する...

MySQL交換パーティションの詳細な例

MySQL交換パーティションの詳細な例序文exchange パーティションを紹介する前に、まず my...

MySQL 文字列連結と null 値の設定のためのインスタンス メソッド

#文字列連結 concat(s1,s2); テーブル内の last_name と first_nam...

Typescript での infer キーワードの使用に関する詳細な理解

目次推測する事例:理解を深める参照する後で忘れないように、キーワード infer をメモしておきます...

Vue3 の動的コンポーネントはどのように機能しますか?

目次1. コンポーネントの登録1.1 グローバル登録1.2 グローバルコンポーネントの登録プロセス1...

Pythonで書かれたWebアプリケーションをDockerでデプロイする実践

目次1. Dockerをインストールする2. コードを書く3. Dockerfileを書く4. 画像...

バッチファイルを処理するLinuxの1行コマンドの詳細な説明

序文最良の方法は、あなたが思いつく最も速い方法ではないかもしれません。職場で一時的に使用するスクリプ...

MySQL で浮動小数点データを文字データに変換するときに起こりうる問題の詳細な説明

序文この記事は主に、MySQL で浮動小数点型を文字型に変換するときに発生する問題を紹介します。これ...

Vue3 シングルファイルコンポーネントのスタイル機能の詳細な説明

目次スタイルスコープスタイルモジュール状態駆動型動的CSS要約するスタイルスコープ注意事項:スタイル...

Vue Routerはバックグラウンドデータに応じて異なるコンポーネントをロードします

目次実際のプロジェクトで遭遇する要件実装が間違っているところもある私は個人的に、実装するより良い方法...

ウェブデザインにおける階層化インターフェースの設計経験

多くのネットユーザーは、なぜ自分のウェブサイトはいつも色の問題を抱えていて、いつも地味に見え、注目を...

Linux システム ディレクトリ sys、tmp、usr、var の詳細な説明。

Linux 初心者から Linux マスターへの成長の道: Linux システム ディレクトリ s...

任意の長さの配列を作成または埋めるための JS のヒントの要約

目次序文直接充填方式for ループの push() メソッド配列コンストラクタメソッド配列コンストラ...