如何修复 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_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中文网其他相关文章!
热AI工具
Undress AI Tool
免费脱衣服图片
Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片
AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。
Clothoff.io
AI脱衣机
Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!
热门文章
热工具
记事本++7.3.1
好用且免费的代码编辑器
SublimeText3汉化版
中文版,非常好用
禅工作室 13.0.1
功能强大的PHP集成开发环境
Dreamweaver CS6
视觉化网页开发工具
SublimeText3 Mac版
神级代码编辑软件(SublimeText3)
热门话题
处理MySQL中的角色集和校正问题
Jul 08, 2025 am 02:51 AM
字符集和排序规则问题常见于跨平台迁移或多人开发时,导致乱码或查询不一致。核心解决方法有三:一要检查并统一数据库、表、字段的字符集为utf8mb4,通过SHOWCREATEDATABASE/TABLE查看,用ALTER语句修改;二要在客户端连接时指定utf8mb4字符集,在连接参数或执行SETNAMES中设置;三要合理选择排序规则,推荐使用utf8mb4_unicode_ci以确保比较和排序准确性,并在建库建表时指定或通过ALTER修改。
实施交易和了解MySQL中的酸性
Jul 08, 2025 am 02:50 AM
MySQL支持事务处理,使用InnoDB存储引擎可确保数据一致性和完整性。1.事务是一组SQL操作,要么全部成功,要么全部失败回滚;2.ACID属性包括原子性、一致性、隔离性和持久性;3.手动控制事务的语句为STARTTRANSACTION、COMMIT和ROLLBACK;4.四种隔离级别包括读未提交、读已提交、可重复读和串行化;5.正确使用事务需注意避免长时间运行、关闭自动提交、合理处理锁及异常。通过这些机制,MySQL可实现高可靠与并发控制。
使用命令行客户端连接到MySQL数据库
Jul 07, 2025 am 01:50 AM
连接MySQL数据库最直接的方式是使用命令行客户端。首先输入mysql-u用户名-p并正确输入密码即可进入交互式界面;若连接远程数据库,需添加-h参数指定主机地址。其次,可直接在登录时切换到特定数据库或执行SQL文件,如mysql-u用户名-p数据库名或mysql-u用户名-p数据库名
设计强大的MySQL数据库备份策略
Jul 08, 2025 am 02:45 AM
要设计一个靠谱的MySQL备份方案,1.首先明确RTO和RPO指标,根据业务可接受的停机时间和数据丢失范围确定备份频率与方式;2.采用混合备份策略,结合逻辑备份(如mysqldump)、物理备份(如PerconaXtraBackup)和二进制日志(binlog),实现快速恢复与最小数据丢失;3.定期测试恢复流程,确保备份有效性并熟悉恢复操作;4.注重存储安全,包括异地存储、加密保护、版本保留策略及备份任务监控。
使用MySQL 8中的常见表表达式(CTE)
Jul 12, 2025 am 02:23 AM
CTEs是MySQL8.0引入的特性,提升复杂查询的可读性与维护性。1.CTE是临时结果集,仅在当前查询中有效,结构清晰,支持重复引用;2.相比子查询,CTE更易读、可重用且支持递归;3.递归CTE可处理层级数据,如组织结构,需包含初始查询与递归部分;4.使用建议包括避免滥用、命名规范、关注性能及调试方法。
MySQL查询性能优化的策略
Jul 13, 2025 am 01:45 AM
MySQL查询性能优化需从核心点入手,包括合理使用索引、优化SQL语句、表结构设计与分区策略、利用缓存及监控工具。1.合理使用索引:在常用查询字段上建索引,避免全表扫描,注意组合索引顺序,不低选择性字段加索引,避免冗余索引。2.优化SQL查询:避免SELECT*,不在WHERE中用函数,减少子查询嵌套,优化分页查询方式。3.表结构设计与分区:根据读写场景选择范式或反范式,选用合适字段类型,定期清理数据,大表考虑水平分表或按时间分区。4.利用缓存与监控:使用Redis缓存减轻数据库压力,开启慢查询
用MySQL分析查询执行
Jul 12, 2025 am 02:07 AM
MySQL的EXPLAIN是用于分析查询执行计划的工具,通过在SELECT查询前加EXPLAIN可查看执行过程。1.主要字段包括id、select_type、table、type、key、Extra等;2.高效查询需关注type(如const、eq_ref为佳)、key(是否使用合适索引)和Extra(避免Usingfilesort、Usingtemporary);3.常见优化建议:避免对字段使用函数或模糊前导通配符、确保字段类型一致、合理设置连接字段索引、优化排序与分组操作,以提升性能并减少资
优化MySQL中的复杂加入操作
Jul 09, 2025 am 01:26 AM
TooptimizecomplexJOINoperationsinMySQL,followfourkeysteps:1)EnsureproperindexingonbothsidesofJOINcolumns,especiallyusingcompositeindexesformulti-columnjoinsandavoidinglargeVARCHARindexes;2)ReducedataearlybyfilteringwithWHEREclausesandlimitingselected


