如何利用RMAN修复逻辑坏块_VALIDATE CHECK LOGICAL验证块内结构损坏

MySQL 5.7及之前子查询可绕过权限检查,因解析阶段未校验嵌套访问路径权限链;应升级至8.0+、禁用derived_merge、显式设SQL SECURITY DEFINER并限制PROCESS权限。子查询里用 SELECT ... FROM mysql.user 为什么能绕过权限检查?MySQL 5.7 及之前版本存在一个经典漏洞:当用户拥有某个数据库的 SELECT 权限,且该库下有视图或触发器引用了系统表(如 mysql.user),攻击者可通过构造子查询间接读取敏感系统表------不是因为权限被"提升",而是 MySQL 在子查询解析阶段未严格校验嵌套访问路径的权限链。实操建议:升级到 MySQL 8.0+,该版本默认启用 sql_mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION 并修复了多数系统表泄露路径禁用非必要系统表访问:执行 REVOKE SELECT ON mysql.* FROM 'attacker'@'%';,哪怕用户只应查 app_db避免在视图定义中硬编码 mysql.user 或 information_schema 表,这类对象会被子查询继承上下文权限如何关闭 subquery_cache 防止缓存污染导致的越权?MySQL 没有叫 subquery_cache 的配置项------这是常见误解。真正影响子查询安全行为的是查询重写机制和缓存策略,但更关键的是 optimizer_switch 中的 derived_merge 和 materialization 开关。开启 materialization 会让子查询先物化成临时表,此时权限检查发生在物化前;而 derived_merge 启用时,子查询可能被合并进外层,导致权限判断逻辑错位。实操建议:检查当前开关:运行 SELECT @@optimizer_switch;,确认 materialization=on 且 derived_merge=off在会话级禁用合并:执行 SET SESSION optimizer_switch='derived_merge=off';,尤其用于动态拼接 SQL 的应用后端注意性能代价:关闭 derived_merge 可能使某些 JOIN 查询变慢,需配合 EXPLAIN 验证执行计划DEFINER 和 SQL SECURITY 怎么配才不翻车?创建视图、存储过程或函数时若指定 DEFINER='root'@'localhost' 但没设 SQL SECURITY DEFINER,MySQL 默认按 INVOKER 执行------意味着调用者用自己的权限去查底层表,子查询就可能借道穿透。反过来,设成 DEFINER 却忘了给 DEFINER 用户授予对应系统表权限,又会导致执行时报 ERROR 1449 (HY000): The user specified as a definer ('root'@'localhost') does not exist 或静默失败。 跃问 跃问是由阶跃星辰开发的免费AI智能问答助手,随时帮你智能搜索、高效阅读、识图理解、和你畅聊感兴趣的话题。

相关推荐
zuYM4g7Dp8 分钟前
NoSql数据库设计心得
数据库·nosql
xsc6996751 小时前
从零搭建大模型与智能体平台 - 完整技术详解
python
睡不醒男孩0308232 小时前
第七篇:揭秘 PostgreSQL 数据库内核级管控:CLup 深度架构设计与高可用底座技术白皮书
数据库·postgresql·clup
无风听海2 小时前
多租户系统中的 OIDC:Discovery 端点与联合登录的深度实践
后端·python·flask
cmes_love2 小时前
Level 2逐笔成交历史数据下载方法笔记
数据库·笔记·oracle
CTA终结者3 小时前
期货量化主力换月程序怎么移仓:天勤 underlying_symbol 与任务切换
python·区块链
马士兵教育3 小时前
Java还有前景吗?Java+AI大模型学习路线及项目?
java·人工智能·python·学习·机器学习
swordbob3 小时前
MySQL字符集陷阱:从Oracle迁移踩坑到utf8mb4强制规范
数据库·sql
牛油果子哥q3 小时前
【C++ STL string 】C++ STL string 终极精讲:底层原理、内存机制、全套API、深浅拷贝、易错坑点与工程实战规范
数据库·c++
KaMeidebaby3 小时前
卡梅德生物技术快报|纯化重组蛋白实操详解
人工智能·python·tcp/ip·算法·机器学习