MySQL 的 ‘mysql_native_password’ 已弃用警告 解决办法


有用户反应,升级到 MySQL 8.0.34 或以上版本后,日志中有大量的’mysql_native_password’ 已弃用警告信息,多者甚至达到上万条。本文将给出解决办法。

‘mysql_native_password’ 已弃用警告

MySQL警告信息:

[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 补丁(MySQL 8.0.34,于 2023 年 7 月 18 日发布,正式发布)引起的,该补丁是“Layer7_API_PlatformUpdate_64bit_v10.X-CentOS-2023-07-25”补丁的一部分。

更新日志中这部分的描述原文如下:

The mysql_native_password authentication plugin now is deprecated and subject to removal in a future version of MySQL. CREATE USER, ALTER USER, and SET PASSWORD operations now insert a deprecation warning into the server error log if an account attempts to authenticate using mysql_native_password as an authentication method. (Bug #35336317)

https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-34.html 

这段文字是关于 MySQL 中的一个重要变化的说明。具体来说,它指出了以下几点:

  1. mysql_native_password 身份验证插件现在已被弃用:这意味着 MySQL 不再推荐或支持使用 mysql_native_password 插件进行用户身份验证。mysql_native_password 是一种较早的身份验证方式,它使用不太安全的哈希算法来存储密码。
  2. 弃用警告插入到错误日志中:如果某个账户尝试使用 mysql_native_password 进行身份验证,那么在错误日志中将插入一条弃用警告。这意味着 MySQL 将记录所有尝试使用不安全的 mysql_native_password 进行身份验证的操作,以提醒管理员和开发者注意这个变化,并考虑升级到更安全的身份验证方式。
  3. 未来版本可能移除 mysql_native_password:虽然当前版本中仍然支持 mysql_native_password,但在将来的 MySQL 版本中,可能会完全移除这个身份验证插件。因此,用户应该考虑迁移到更安全的身份验证方式,例如 caching_sha2_password

总的来说,这段文字是 MySQL 开发团队发出的警告,提醒用户不要再依赖或使用 mysql_native_password 插件进行身份验证,而是应该迁移到更安全的替代方案。

如何应对

临时解决方案

MySQL 发出该警告,并不会终止MySQL操作,而且 MySQL 暂时还未彻底弃用 mysql_native_password ,作为运维的临时解决方案,可以抑制 mysqld.log 中的警告消息。

编辑 /etc/my.cnf 并在 [mysqld] 部分下添加以下行:

log_error_suppression_list='MY-013360'

log_error_suppression_list 是 MySQL 中的一个配置选项,用于指定哪些特定的错误或警告不应该被记录到错误日志中。

终极解决方案

将下面代码插入到 MySQL 的配置文件中。具体来说,MySQL 的配置文件通常是 my.cnf(对于 Unix/Linux 系统)或 my.ini(对于 Windows 系统)。

在配置文件中找到一个名为 [mysqld] 的部分,然后在该部分中添加或修改 default_authentication_plugin 配置项,设置其值为 caching_sha2_password。示例如下:

[mysqld]
default_authentication_plugin=caching_sha2_password

修改完配置文件后,保存并重新启动 MySQL 服务器,以使配置生效。

对于上述修改前已存在的 MySQL 用户,还需要进行以下操作:

可以在 MySQL 的命令行客户端或者任何支持执行 MySQL 命令的数据库管理工具中执行这条命令。

ALTER USER 'testuser'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'password'

这条 MySQL 指令是用于修改数据库用户 'testuser'@'localhost' 的身份验证方式及密码的。具体来说:

  • ALTER USER: 这是 MySQL 中用于修改用户属性的命令。
  • 'testuser'@'localhost': 这是要修改的用户标识符。'testuser' 是用户名,'localhost' 表示该用户只能从本地主机连接到 MySQL 服务器。
  • IDENTIFIED WITH caching_sha2_password: 这部分指定了修改后用户的身份验证方式。caching_sha2_password 是一种加密算法,用于安全地存储密码。它提供了比较高的安全性,并且是 MySQL 8.0 版本以后的默认身份验证方式。
  • BY 'password': 这是要为用户设置的新密码。

执行前注意将 testuserpassword 修改为所需的 MySQL 用户名与密码。


➥ 继续阅读:

(原创作者):

版权声明:若无本站正式授权,禁止一切形式转载,侵权必究。