千家信息网

mysql有效防止删库跑路的方法教程

发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,这篇文章主要讲解了"mysql有效防止删库跑路的方法教程",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"mysql有效防止删库跑路的方法教程"吧!目录安
千家信息网最后更新 2025年01月19日mysql有效防止删库跑路的方法教程

这篇文章主要讲解了"mysql有效防止删库跑路的方法教程",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"mysql有效防止删库跑路的方法教程"吧!

目录
  • 安全模式设置

  • 测试

    • 1.无where的update和delete

    • 2、非索引键的delete

    • 3.索引键的delete

  • 总结

    大家肯定听说过,有些开发者由于个人失误,在delete或者update语句的时候没有添加where语句,导致整个表数据错乱。

    mysql安全模式:mysql发现delete、update语句没有添加where或者limit条件时会报错。整个sql将无法执行,有效防止了误删表的情况。

    安全模式设置

    在mysql中通过如下命令查看状态:

     show variables like 'sql_safe_updates';

    默认是OFF状态,将状态设置为ON即可:

    • set sql_safe_updates=1; //打开

    • set sql_safe_updates=0; //关闭

    设置为ON之后

    • update语句:where条件中列(column)没有索引可用且无limit限制时会拒绝更新。where条件为常量且无limit限制时会拒绝更新。

    • delete语句: ①where条件为常量,②或where条件为空,③或where条件中 列(column)没有索引可用且无limit限制时拒绝删除。

    测试

    打开安全模式进行测试

    1.无where的update和delete

    delete from t_user

    delete from t_user> 1175 - You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column> 时间: 0.001s

    update t_user set name='123'

    update t_user set name='123'> 1175 - You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column> 时间: 0.001s

    2、非索引键的delete

    delete from t_user where name='123'

    delete from  t_user where name='123'> 1175 - You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column> 时间: 0.007s

    如果delete的where条件不是索引键,则必须要添加limit才可以。

    delete from t_user where name='123' limit 1

    delete from  t_user where name='123' limit 1> Affected rows: 0> 时间: 0.002s

    3.索引键的delete

    delete from t_user where group_id='123'

    delete from  t_user where group_id='123'> Affected rows: 0> 时间: 0s

    总结

    如果设置了sql_safe_updates=1,那么update语句必须满足如下条件之一才能执行成功

    • 使用where子句,并且where子句中列必须为prefix索引列

    • 使用limit

    • 同时使用where子句和limit(此时where子句中列可以不是索引列)

    delete语句必须满足如下条件之一才能执行成功

    • 使用where子句,并且where子句中列必须为prefix索引列

    • 同时使用where子句和limit(此时where子句中列可以不是索引列)一才能执行成功。

    感谢各位的阅读,以上就是"mysql有效防止删库跑路的方法教程"的内容了,经过本文的学习后,相信大家对mysql有效防止删库跑路的方法教程这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

    索引 条件 子句 语句 有效 时间 教程 方法 安全 模式 成功 状态 学习 测试 限制 内容 同时 常量 情况 更新 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络安全策略路由 网络技术威胁安全 学软件开发还用学平面设计 网易的连接服务器是 数字政府网络安全指数评估重点改进方案 数据库技术03139名词解释 代理服务器 服务端 阿里巴巴云服务器的内存有多大 软件开发转行revit开发 2021互联网大会灵犀科技 传艺科技应用软件开发 网络安全的思维 无法解析服务器名称或地址 手机电子邮箱的服务器怎么填 软件开发文档复制文案 硬件服务器和数据库会计分录 计算机网络技术主要知识点 宝山区工商软件开发哪家好 分布式数据库安全架构 学校网络安全问题整改方案 皇城网络技术有限公司 渗透测试如何查看服务器开放端口 c mysql数据库新建 网络安全将来研究方向 休闲玩家怀旧服服务器推荐 渭南博海网络技术有限公司 数据库专业导论报告 服务器新装系统驱动怎么办 acc数据库介绍 计算机网络技术做什么工作的
    0