有用户反应,升级到 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 用户名与密码。












暂无评论内容