有用户反应,升级到 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 中的一个重要变化的说明。具体来说,它指出了以下几点:
mysql_native_password
身份验证插件现在已被弃用:这意味着 MySQL 不再推荐或支持使用mysql_native_password
插件进行用户身份验证。mysql_native_password
是一种较早的身份验证方式,它使用不太安全的哈希算法来存储密码。- 弃用警告插入到错误日志中:如果某个账户尝试使用
mysql_native_password
进行身份验证,那么在错误日志中将插入一条弃用警告。这意味着 MySQL 将记录所有尝试使用不安全的mysql_native_password
进行身份验证的操作,以提醒管理员和开发者注意这个变化,并考虑升级到更安全的身份验证方式。 - 未来版本可能移除
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'
: 这是要为用户设置的新密码。
执行前注意将 testuser
和 password
修改为所需的 MySQL 用户名与密码。