讲师中心 微信公众号
AI工具推荐 视频效率加速

如何防范MySQL的提权漏洞利用_安全补丁与引擎更新

胖萱同学_8931

胖萱同学_8931

发布时间:2026-05-04 06:10:48

|

1039人浏览过

|

来源于php中文网

原创

MySQL 8.0.22+默认禁用LOCAL INFILE,需服务端SET GLOBAL local_infile=ON、客户端显式启用;8.0.24+强化UDF签名校验与符号链接限制;mysql_upgrade异常多因残留--skip-grant-tables;Percona/MariaDB补丁节奏不同,须核对完整版本字符串。

MySQL 5.7 升级到 8.0 后 LOAD DATA LOCAL INFILE 突然失效?不是配置错了,是默认禁用了

mysql 8.0.22+ 默认关闭了客户端侧的 local infile 功能,哪怕服务端 local_infile=on、客户端也加了 --local-infile=1,连接时仍会静默拒绝——错误不报,但 load data local infile 返回空结果或“file not found”这类误导性提示。

根本原因是:客户端库(如 libmysqlclient、mysqlclient)在握手阶段不再主动声明支持 LOCAL INFILE,服务端因此跳过协商。这不是 bug,是安全策略收紧。

  • 服务端必须显式启用:SET GLOBAL local_infile = ON(需 SUPER 权限),且配置文件中 local_infile=ON 并重启
  • 客户端连接时必须传参:mysql --local-infile=1 -u user -p;程序里要用 connect(..., local_infile=True)(Python mysql-connector)或 mysqli_options($link, MYSQLI_OPT_LOCAL_INFILE, true)(PHP)
  • MyCLI、DBeaver 等工具默认不启用,需手动勾选“Allow local file loading”或改连接字符串加 ?allowLocalInfile=true

用 CREATE FUNCTION 加载 UDF 提权?8.0.24+ 的 secure_file_priv 已拦不住了

旧思路是把恶意 .so 写进 /usr/lib/mysql/plugin/,再用 CREATE FUNCTION pwn RETURNS STRING SONAME 'libpwn.so' 注入执行权限。现在不行了——MySQL 8.0.24 起,UDF 加载强制校验签名,且 plugin_dir 不再允许写入(由包管理器锁定)。

真正危险的是绕过路径限制的加载方式:如果攻击者已有 FILE 权限,可先用 SELECT ... INTO DUMPFILE 把恶意代码写到 secure_file_priv 指向的任意目录(比如 /var/lib/mysql-files/),再通过符号链接把该目录映射到 plugin_dir 下合法子路径——但 MySQL 8.0.29+ 已禁止插件路径包含符号链接。

  • 检查当前限制:SHOW VARIABLES LIKE 'secure_file_priv'; 和 SHOW VARIABLES LIKE 'plugin_dir';
  • 禁止符号链接的验证命令:ls -l $(mysql -Nse "SELECT @@plugin_dir"),若输出含 -> 就得立刻修复
  • UDF 文件必须属主为 mysql 用户、权限 ≤644,否则加载失败并记入 error log

mysql_upgrade 运行后权限表乱了?别直接跑,先看 mysqld --skip-grant-tables 是否残留

打完安全补丁(如 Oracle 发布的 CPU 补丁)后执行 mysql_upgrade,常出现 Access denied for user 'root'@'localhost' 或 mysql.user 表结构异常——大概率是上一次升级中断,残留了未清理的 --skip-grant-tables 启动项,导致权限系统没加载,后续所有操作都在无鉴权状态下进行,mysql_upgrade 误把空权限表当正常状态覆盖了。

MySQL
MySQL

编写正确的MySQL查询,避免字符集、索引和锁方面的常见陷阱。

下载

这不是数据损坏,而是元数据状态错位。关键要确认 mysqld 当前是否真在跳过权限验证。

  • 查进程:ps aux | grep mysqld | grep skip-grant,存在即危险
  • 查配置:mysqld --help --verbose 2>/dev/null | grep "default option" 看是否加载了含 skip-grant-tables 的 cnf 文件
  • 安全重启步骤:停服务 → 清掉 my.cnf 里所有 skip- 行 → mysqld --initialize-insecure 不要执行(会重置 root 密码)→ 改用 mysqld --user=mysql --datadir=/var/lib/mysql 手动启动验证

Percona Server / MariaDB 用户别只盯 MySQL 官方补丁

Oracle 的 CPU 补丁只覆盖官方 MySQL,Percona Server 和 MariaDB 使用独立分支,漏洞修复节奏不同。比如 CVE-2023-21912(通过 INFORMATION_SCHEMA 触发内存越界)在 MySQL 8.0.33 修复,但 Percona Server 8.0.32-24 才跟进,MariaDB 10.11.3 才加入——中间版本看似“打了补丁”,实则仍可被利用。

更隐蔽的是引擎层差异:MySQL 用 InnoDB,Percona 默认用 XtraDB,MariaDB 用 Aria/Maria,它们对 ALTER TABLE ... ENGINE= 的权限校验逻辑不同,某些提权链在官方版已堵死,在 XtraDB 中仍可通过 CREATE TABLE ... COMMENT='/* !50100 ... */' 注入执行。

  • 查真实版本:SELECT VERSION(), @@version_comment;,光看 8.0.x 不够,得确认末尾是不是 -log、-Percona 或 -MariaDB
  • 引擎兼容性检查:SHOW ENGINES; 看 SUPPORT 列是否为 YES 或 DEFAULT,DISABLED 的引擎可能被绕过校验
  • Percona 用户优先用 pt-upgrade 替代 mysql_upgrade,它会检测引擎特有字段(如 xtradb_read_view)是否同步

最麻烦的从来不是补丁有没有装,而是你根本不知道自己用的到底是不是那个“打了补丁”的版本——VERSION() 返回的字符串里混着发行版签名,不拆开看就容易漏。

热门AI工具

更多
Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

LibLibAI
LibLibAI Hot

一款AI视频创作工具,主要用于国内领先的AI创意平台,以海量模型、低门槛操作与“创作-分享-商业化”生态,让小白与专业创作者都能高效实现图文乃至视频创意表达,适合需要提升相关任务效率的用户。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

相关专题

更多
数据分析工具有哪些
数据分析工具有哪些

数据分析工具有Excel、SQL、Python、R、Tableau、Power BI、SAS、SPSS和MATLAB等。详细介绍:1、Excel,具有强大的计算和数据处理功能;2、SQL,可以进行数据查询、过滤、排序、聚合等操作;3、Python,拥有丰富的数据分析库;4、R,拥有丰富的统计分析库和图形库;5、Tableau,提供了直观易用的用户界面等等。

4203

2023.10.12

SQL中distinct的用法
SQL中distinct的用法

SQL中distinct的语法是“SELECT DISTINCT column1, column2,...,FROM table_name;”。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

891

2023.10.27

SQL中months_between使用方法
SQL中months_between使用方法

在SQL中,MONTHS_BETWEEN 是一个常见的函数,用于计算两个日期之间的月份差。想了解更多SQL的相关内容,可以阅读本专题下面的文章。

1089

2024.02.23

SQL出现5120错误解决方法
SQL出现5120错误解决方法

SQL Server错误5120是由于没有足够的权限来访问或操作指定的数据库或文件引起的。想了解更多sql错误的相关内容,可以阅读本专题下面的文章。

6101

2024.03.06

sql procedure语法错误解决方法
sql procedure语法错误解决方法

sql procedure语法错误解决办法:1、仔细检查错误消息;2、检查语法规则;3、检查括号和引号;4、检查变量和参数;5、检查关键字和函数;6、逐步调试;7、参考文档和示例。想了解更多语法错误的相关内容,可以阅读本专题下面的文章。

2963

2024.03.06

oracle数据库运行sql方法
oracle数据库运行sql方法

运行sql步骤包括:打开sql plus工具并连接到数据库。在提示符下输入sql语句。按enter键运行该语句。查看结果,错误消息或退出sql plus。想了解更多oracle数据库的相关内容,可以阅读本专题下面的文章。

6080

2024.04.07

sql中where的含义
sql中where的含义

sql中where子句用于从表中过滤数据,它基于指定条件选择特定的行。想了解更多where的相关内容,可以阅读本专题下面的文章。

8161

2024.04.29

sql中删除表的语句是什么
sql中删除表的语句是什么

sql中用于删除表的语句是drop table。语法为drop table table_name;该语句将永久删除指定表的表和数据。想了解更多sql的相关内容,可以阅读本专题下面的文章。

1110

2024.04.29

PixTV官网入口地址合集
PixTV官网入口地址合集

本专题汇总了 PixTV AI 一站式视频创作平台的官方入口与使用教程。无需下载软件,浏览器直接访问即可使用。平台将剧本、图像、视频、声音与剪辑整合在“无限画布”中,接入 GPT Image 2.5、Seedance 2.5 等头部模型。本专题整理了从新建画布、角色锚定、分镜拆分到视频生成与导出的完整操作指南,助你快速上手 AI 短剧与漫剧创作。

80

2026.10.10

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL vs MySQL
PostgreSQL vs MySQL

共1课时 | 183人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn