首页 >数据库 >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删除