如何修复 MySQL 8.4 上的 mysql_native_password 未加载错误

舞夢輝影
发布: 2024-12-09 11:40:37
转载
1205人浏览过
MySQL 8.4(截至 2024 年的最新 LTS 版本)中引入的主要变化之一是默认情况下不再启用“MySQL 本机密码”插件。此外,MySQL 9.0完全删除了这个插件。 此更改会影响 PHP 和其他使用 MySQL 数据库以及 mysql_native_password 身份验证插件的应用程序。由于默认情况下不再加载 mysql_native_password 插件或根

如何修复 MySQL 8.4 上的 mysql_native_password 未加载错误

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 '<USERNAME>'@'<HOST>' IDENTIFIED WITH caching_sha2_password BY '<PASSWORD>';
登录后复制

更换分别是 MySQL 用户的用户名、主机和密码。

身份验证插件更新后,PHP 和其他应用程序将能够通过以下方式连接到数据库: caching_sha2_password 插件。

重新启用 MySQL 本机密码插件

虽然 MySQL 8.4 不再启用默认情况下 mysql_native_password 插件,仍然可以启用此插件。不建议这样做,除非 PHP 应用程序运行 PHP 7.3 或更早版本,否则无法使用 caching_sha2_password 插件。

要启用 mysql_native_password 插件,请将以下内容添加到 [mysqld] 部分MySQL 配置文件并重新启动 MySQL 服务器服务。

在基于 Debian/Ubuntu 的系统上,此文件位于 /etc/mysql/目录。建议为此创建一个新文件(例如,名为 /etc/mysql/conf.d/enable-mysql-native-password.cnf)。

# Enable mysql_native_password plugin[mysqld]mysql_native_password=ON
登录后复制

请注意,mysql_native_password 插件是删除于 MySQL 9.0,所以添加上面的配置不起作用,可以 导致配置错误,因为 mysql_native_password 配置在 MySQL 9.0 上不再有效。

以上就是如何修复 MySQL 8.4 上的 mysql_native_password 未加载错误的详细内容,更多请关注php中文网其它相关文章!

WPS零基础入门到精通全套教程!
WPS零基础入门到精通全套教程!

全网最新最细最实用WPS零基础入门到精通全套教程!带你真正掌握WPS办公! 内含Excel基础操作、函数设计、数据透视表等

下载
来源:php.watch网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号