MySQL 9.7 弃用 FLUSH PRIVILEGES,Connection Control 插件换成 component_connection_control
MySQL 9.7 有两处改动会直接影响日常运维脚本。一处是 FLUSH PRIVILEGES 及其相关入口进入弃用流程;另一处是 Connection Control 从插件改成组件,失败登录计数表从 information_schema 移到 performance_schema。
手册:
9.7.4 release notes:
FLUSH PRIVILEGES 变成 warning
WL #16567:FLUSH PRIVILEGES 语句已弃用,执行时产生 warning,未来版本会移除。
同一批进入弃用、且同样会刷出 warning 的还有:
FLUSH_PRIVILEGES权限本身,以及对该权限的 grant;mysqladmin flush-privileges;mysqladmin reload。
下面几种方式不产生 warning,但同样视为弃用:
- 通过
SIGHUP刷新权限; - 通过
FLUSH PRIVILEGES刷新caching_sha2缓存; mysqladmin refresh。
Windows 上的 MySQL Configurator 已经不再执行这条语句(Bug #37170330)。
多数场景下它本来就是冗余的
GRANT、REVOKE、CREATE USER、DROP USER 这类账号语句会自行重载授权表,执行完立即生效,后面再跟一句 FLUSH PRIVILEGES 只是重复动作。真正需要它的只剩一种情况:绕过 SQL 层直接改 mysql.* 系统表(比如用 INSERT/UPDATE 修 mysql.user),此时才需要手动让 mysqld 重新读表。
因此升级后大量脚本会开始刷 warning 的原因,通常不是权限模型变了,而是这类防御性写法散落在各处:
- 初始化和部署 SQL 里固定带一行
FLUSH PRIVILEGES;; - 容器 entrypoint、备份恢复脚本、Ansible/Puppet 的 mysql 模块调用
mysqladmin reload或flush-privileges; - 定时巡检脚本沿用旧模板。
最省事的处理是删掉相关行;如果必须保留一次重载动作,mysqladmin refresh 暂时不刷 warning,但同样在弃用清单里,不能当作长期方案。
Connection Control:插件换成组件
WL #16573 新增 component_connection_control 取代原有的 Connection Control 插件,两个插件均已弃用并将移除。组件合并了原来的两个插件,安装只需要一条语句:
INSTALL COMPONENT 'file://component_connection_control';
插件关联的 system/status 变量一并弃用,组件对应的变量名需按手册的 Connection Control Component Configuration 页重新核对,不能照抄旧配置。
失败登录计数表的位置也变了:information_schema.CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS 弃用,组件把计数放在 performance_schema.connection_control_failed_login_attempts。
替换顺序与监控改法
- 先导出当前插件相关变量的取值,留作对照;
UNINSTALL PLUGIN卸载旧插件,避免插件与组件同时加载;INSTALL COMPONENT 'file://component_connection_control';- 按组件配置页重写变量;
- 把监控和告警 SQL 改到
performance_schema; - 用一次失败登录验证计数是否落到新表。
监控侧只需要改表名:
SELECT * FROM performance_schema.connection_control_failed_login_attempts;
示例中的 information_schema 旧表名在告警规则、Grafana 面板、采集脚本里往往各存一份,替换时按关键字全局搜一遍比按文档逐条改更可靠。
同批其他变化
Version Tokens 插件弃用(version_tokens_* 函数、VERSION_TOKEN_ADMIN 权限、version_tokens_session* 变量);SCRAM-SHA-1(SASL LDAP)自 9.5.0 起弃用,改用 SCRAM-SHA-256;9.7.2 弃用 group_replication_communication_stack 与 group_replication_ip_allowlist,并把 thread_pool_max_unused_threads 的取值改为默认 32、最小 0、最大 4096;9.7.4 引入四段式版本号 VERSION_WITH_UPDATE() / version_with_update / mysqld --version-with-update,旧接口保持三段式兼容。
时间线
9.7.4 LTS 于 2026-10-20 发布,同期还有 26.10 Innovation 和 8.4.13 LTS。