MySQL 8.0+ 已移除 SUPER 权限,须按功能拆分授予动态权限:KILL 需 PROCESS+CONNECTION_ADMIN,调参需 SYSTEM_VARIABLES_ADMIN,备份需 BACKUP_ADMIN,复制管理需 REPLICATION_SLAVE_ADMIN。

GRANT SUPER 为什么直接报错 ERROR 3715
执行 GRANT SUPER ON *.* TO 'user'@'%' 必然失败,这不是语法问题,而是 MySQL 8.0+ 彻底移除了 SUPER 这个权限标识符。报错信息 ERROR 3715 (HY000): The 'SUPER' privilege is obsolete 就是明确告诉你:它已拆解,不能用了。
旧版中一个 SUPER 扛起所有管理操作,现在必须按实际用途选对应动态权限——没映射关系、不兼容、也不能靠“叠加多个旧权限”模拟出来。
KILL 线程必须同时有 PROCESS 和 CONNECTION_ADMIN
只给 PROCESS 权限,SHOW PROCESSLIST 只能看到自己的线程;执行 KILL CONNECTION 123 会报 ERROR 1227 (42000): Access denied,因为缺操作权。
-
PROCESS:允许查看线程列表(含他人),但仅限“看” -
CONNECTION_ADMIN:允许终止任意连接或查询,MySQL 8.0.14+ 才支持 - 两者需同时授予:
GRANT PROCESS, CONNECTION_ADMIN ON *.* TO 'monitor'@'%' - 授完务必执行
FLUSH PRIVILEGES,尤其在低版本或启用了skip-grant-tables的实例上,否则权限不生效
修改系统变量不能再靠 SUPER,得用 SYSTEM_VARIABLES_ADMIN
想执行 SET GLOBAL max_connections = 1000 或 SET PERSIST innodb_buffer_pool_size = 2G,SUPER 不再管用。替代权限不是“差不多就行”,而是严格绑定操作类型:
面向 CRM 系统的 MySQL 8 数据库模式设计。当用户需要为客户关系管理(CRM)系统设计、评审、优化或生成数据库模式时,应使用此项技能。
-
SYSTEM_VARIABLES_ADMIN:覆盖SET GLOBAL和SET SESSION(不含PERSIST) -
PERSIST_RO_VARIABLES_ADMIN:必须和SYSTEM_VARIABLES_ADMIN同时存在,才能用SET PERSIST_ONLY - 注意:
SYSTEM_VARIABLES_ADMIN无法限制到库/表级,作用范围就是整个实例,且不能通过角色继承(直到 8.0.12 才有限支持,仍需显式激活) - 开发环境慎授——应用初始化脚本里误写
SET GLOBAL sort_buffer_size可能拖垮整实例内存
BACKUP_ADMIN 和 REPLICATION_SLAVE_ADMIN 不能用 SELECT 或 REPLICATION CLIENT 替代
有人以为给 SELECT ON *.* 就能做物理备份,或以为 REPLICATION CLIENT 能启停复制,结果执行 LOCK INSTANCE FOR BACKUP 或 START REPLICA 全部失败。
-
BACKUP_ADMIN是专用权限,控制LOCK INSTANCE FOR BACKUP、读取performance_schema.log_status等,和数据读写无关 -
REPLICATION_SLAVE_ADMIN才能执行CHANGE REPLICATION SOURCE TO、START/STOP REPLICA;REPLICATION CLIENT只能查SHOW REPLICA STATUS - 这些权限都存于
mysql.global_grants表,SHOW GRANTS能看到,但不会出现在旧版mysql.user表中
动态权限的粒度很细,但边界也很硬——给错一个,操作就卡死;多给一个,风险就放大。别指望“先全开再收”,得从第一个 GRANT 就想清楚谁要做什么、做到哪一步为止。










