ホームページ >データベース >mysql チュートリアル >MySQL 8.4 で mysql_native_password がロードされていないエラーを修正する方法
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 コンソールで次のコマンドを実行し、非推奨の認証プラグインを使用しているユーザーをリストします。
SELECT user, host, plugin from mysql.user WHERE plugin='mysql_native_password';
上記のコマンドを実行すると、次のすべてのユーザーがリストされます。 mysql_native_password プラグインを使用します:
十分な権限を持つ MySQL コンソールで、mysql_native_password を使用して各ユーザーに対して次のコマンドを実行します。 plugin:
ALTER USER ''@'' IDENTIFIED WITH caching_sha2_password BY '';
認証プラグインが更新されると、PHP および他のアプリケーションは caching_sha2_password プラグインを介してデータベースに接続できるようになります。
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 サイトの他の関連記事を参照してください。