MySQL 8.0 已废弃的功能
2025-08-27 11:33 abce 阅读(67) 评论(0) 收藏 举报MySQL 8.0 即将达到其生命周期终止(EOL)阶段,而 MySQL 8.4 则成为焦点,这是首个长期支持(LTS)版本。在MySQL 8.4 中,MySQL 8.0 中一些功能已经被移除或过期。
mysql shell 提供了诸如 util.checkforserverupgrade() 之类的工具,可帮助你提前扫描已废弃功能和升级阻碍因素。
移除的功能
1.password()函数
老的版本可以使用set password=password()来修改设置密码,这使用了比较旧的、安全性低的哈希方法。现在已经被彻底移除。可以切换成create user ... identified by 'passwrod'、alter user ... identified by 'password' 命令。
2.tx_isolation系统变量
老版本中tx_isolation也是transaction_isolation的别名,早就过期,多年以后终于被移除。建议在应用程序代码和配置文件中将 tx_isolation 替换为 transaction_isolation。
3.expire_logs_days变量
expire_logs_days是以前设置二进制日志保留时间的方式。它已被更精细的 binlog_expire_logs_seconds 取代。
过期的功能
升级到 mysql 8.4 后,将看到以下新警告。建议立即开始规划解决这些问题,以便下次升级更加顺畅。
1.mysql_native_password
这是8.0版本之前的默认身份验证插件。与当前的默认插件caching_sha2_password相比,它安全性较低,因此已正式被淘汰。建议开始对用户和旧应用程序进行审计,确保它们能够支持新的身份验证插件。
2.flush hosts
该命令在现代容器化环境中已不再实用。它即将被淘汰,因此建议将其从任何维护脚本中移除。
3.–skip-grant-tables
我们都曾使用过这个“紧急”选项来重置丢失的 root 密码,但它是一个巨大的安全漏洞。其废弃鼓励使用更安全的 init-file 方法进行密码恢复。
4.float(m,d) 和 double(m,d) 语法
很多人曾使用这个非标准语法来定义小数位数。sql 标准仅支持 float 或 double,因此 mysql 已移除这一易混淆的替代方案。
现在应在模式定义中使用简单的 float 或 double 类型。建议在应用程序逻辑中处理任何特定的舍入或格式化操作。尽管此语法目前已被废弃,但你应预期它将在未来版本的 mysql 中被移除。
5.default_authentication_plugin
为清晰起见,对名称进行了简单修改。该变量现更名为default_authentication_policy。