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_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中文网其他相关文章!

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于架构原理的相关内容,MySQL Server架构自顶向下大致可以分网络连接层、服务层、存储引擎层和系统文件层,下面一起来看一下,希望对大家有帮助。

mysql的msi与zip版本的区别:1、zip包含的安装程序是一种主动安装,而msi包含的是被installer所用的安装文件以提交请求的方式安装;2、zip是一种数据压缩和文档存储的文件格式,msi是微软格式的安装包。

方法:1、利用right函数,语法为“update 表名 set 指定字段 = right(指定字段, length(指定字段)-1)...”;2、利用substring函数,语法为“select substring(指定字段,2)..”。

在mysql中,可以利用char()和REPLACE()函数来替换换行符;REPLACE()函数可以用新字符串替换列中的换行符,而换行符可使用“char(13)”来表示,语法为“replace(字段名,char(13),'新字符串') ”。

转换方法:1、利用cast函数,语法“select * from 表名 order by cast(字段名 as SIGNED)”;2、利用“select * from 表名 order by CONVERT(字段名,SIGNED)”语句。

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于MySQL复制技术的相关问题,包括了异步复制、半同步复制等等内容,下面一起来看一下,希望对大家有帮助。

在mysql中,可以利用REGEXP运算符判断数据是否是数字类型,语法为“String REGEXP '[^0-9.]'”;该运算符是正则表达式的缩写,若数据字符中含有数字时,返回的结果是true,反之返回的结果是false。

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了mysql高级篇的一些问题,包括了索引是什么、索引底层实现等等问题,下面一起来看一下,希望对大家有帮助。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

禅工作室 13.0.1
功能强大的PHP集成开发环境