首頁 >資料庫 >mysql教程 >如何修復 MySQL 8.4 上的 mysql_native_password 未載入錯誤

如何修復 MySQL 8.4 上的 mysql_native_password 未載入錯誤

PHP中文网
PHP中文网轉載
2024-12-09 11:42:05308瀏覽

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)中引入的主要更改之一 截至 2024 年發布)的問題是“MySQL 本機密碼”插件沒有 默認啟用時間更長。此外,MySQL 9.0刪除了這個插件 完全。

此更改會影響 PHP 和其他使用 MySQL 數據庫和 mysql_native_password 身份驗證插件的應用程序。由於默認情況下不再加載 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 插件對每個用戶運行以下命令:

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

之後身份驗證插件更新後,PHP 和其他應用程序將能夠通過 caching_sha2_password 插件連接到數據庫。

重新啟用 MySQL Native 密碼插件

雖然 MySQL 8.4 不再啟用 mysql_native_password 插件默認情況下,仍然可以啟用此插件。除非 PHP 應用程序運行 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中文網其他相關文章!

陳述:
本文轉載於:php.watch。如有侵權,請聯絡admin@php.cn刪除