ホームページ >データベース >mysql チュートリアル >MySQL 8.4 で mysql_native_password がロードされていないエラーを修正する方法

MySQL 8.4 で mysql_native_password がロードされていないエラーを修正する方法

PHP中文网
PHP中文网転載
2024-12-09 11:42:05305ブラウズ

How to fix the SQLSTATE[HY000] [1524] Plugin mysql_native_password is not loaded errors caused in MySQL 8.4 no longer enabling the mysql_native_password plugin by default

MySQL 8.4 (最新の LTS) で導入された主要な変更の 1 つ 2024 年時点でのリリース)は、「MySQL Native Password」プラグインがサポートされていないことを意味します。 デフォルトで有効になっなくなりました。さらに、MySQL 9.0 ではこのプラグインが削除されます。

この変更は、mysql_native_password 認証プラグインで MySQL データベースを使用する PHP およびその他のアプリケーションに影響します。 mysql_native_password プラグインがデフォルトでロードされなくなったか、まったく使用できないため、PHP PDO/MySQLi 接続は失敗します。

ロードされなくなった mysql_native_password プラグインを使用してデータベースに接続しようとすると、PDO/MySQLi はスローしますによって返されたエラーMySQL:


PDO:

SQLSTATE[HY000] [1524] Plugin 'mysql_native_password' is not loaded

MySQLi:

 mysqli_sql_exception  Plugin 'mysql_native_password' is not loaded.

MySQL 8.0.34 ~ 8.3 で、mysql_native_password プラグインを使用すると、 MySQL エラーに警告が記録されるlog:

[Warning] [MY-013360] [Server] Plugin mysql_native_password reported: ''mysql_native_password' is deprecated and will be removed in a future release. Please use caching_sha2_password instead'

MySQL 8.4 では、mysql_native_password プラグインをロードしないよう変更が加えられており、その結果、上記のエラーが発生します。 MySQL 9.0 では、mysql_native_password プラグインが完全に削除され、同じエラーが発生します。


PHP は、PHP 7.4 以降、caching_sha2_password 認証をサポートしています。このエラーを修正するには、MySQL ユーザーの認証プラグインを caching_sha2_password に変更します。

mysql_native_password を使用して MySQL ユーザーをリストする

MySQL コンソールで次のコマンドを実行し、非推奨の認証プラグインを使用しているユーザーをリストします。

SELECT user, host, plugin from mysql.user WHERE plugin='mysql_native_password';

上記のコマンドを実行すると、次のすべてのユーザーがリストされます。 mysql_native_password プラグインを使用します:

MySQL 8.4 - users with mysql_native_password plugin

mysql_native_password ユーザーを caching_sha2_password に更新します

十分な権限を持つ MySQL コンソールで、mysql_native_password を使用して各ユーザーに対して次のコマンドを実行します。 plugin:

ALTER USER ''@'' IDENTIFIED WITH caching_sha2_password BY '';

認証プラグインが更新されると、PHP および他のアプリケーションは caching_sha2_password プラグインを介してデータベースに接続できるようになります。

MySQL ネイティブ パスワード プラグインを再度有効化します

MySQL 8.4 ではデフォルトで mysql_native_password プラグインが有効になりませんが、このプラグインを有効にすることはまだ可能です。 PHP アプリケーションが PHP 7.3 以前のバージョンを実行している場合を除き、これを実行することはお勧めできません。PHP 7.3 以前のバージョンでは、caching_sha2_password プラグインを使用できません。

mysql_native_password プラグインを有効にするには、 MySQL 構成ファイルを作成し、MySQL サーバー サービスを再起動します。

Debian/Ubuntu ベースの場合システムの場合、このファイルは /etc/mysql/ ディレクトリにあります。このために、新しいファイル (たとえば、/etc/mysql/conf.d/enable-mysql-native-password.cnf という名前) を作成することをお勧めします。

SQLSTATE[HY000] [1524] Plugin 'mysql_native_password' is not loaded

mysql_native_password プラグインはで削除されました MySQL 9.0 では、上記の構成を追加しても機能しません。 mysql_native_password 設定は MySQL 9.0 では有効ではなくなったため、設定エラーが発生します。

以上がMySQL 8.4 で mysql_native_password がロードされていないエラーを修正する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はphp.watchで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。