阿里巴巴开发手册的1个奇葩规定,源自于一

程序员的最后威胁是删库,而跟在删库后面的一般就是跑路了,这是什么原因呢?先跟大家普及一下删库是什么意思,有什么后果?

数据库简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、截取、更新、删除等操作。也可以理解为按照数据结构来组织、存储和管理数据的仓库。是管理信息系统、办公自动化系统、决策支持系统等各类信息系统的核心部分,一旦数据被删除,后果十分严重。

顺丰工程师误删库“被”跑路

顺丰工程师删库:在接到改需求的消息后,按照操作流程登陆上了生产数据库跳转机,通过navicat-mysql客户端管理工具,连入SHIVA-OMCS的RUSS库进行操作。在操作过程中,该运维发现选错了RUSS数据库,打算删除执行的sql。结果操作失误,鼠标跳回到了russ库,在未确认所选情况的时候,直接delete了。还忽视了弹窗的提示,直接一个回车,russ库被删除。导致系统故障,无法使用并持续约分钟。该程序员也因为操作问题被“跑路”了。

荷兰程序员删库跑路

荷兰海牙的一家云主机商也遭遇过被删库的经历,一名前任管理员删光了该公司所有客户的数据,并且擦除了大多数服务器上面的内容,导致用户数据全部丢失,网络服务瘫痪一周,程序员跑的再快也没用。

阿里巴巴程序员差点删库

阿里巴巴作为大厂,人员的技术应该都是大牛级别的,但在《阿里巴巴JAVA开发手册》中,Mysql中有两条与此事件相关:

禁止使用存储过程,存储过程难以调试和扩展,更没有移植性;

数据订正(特别是删除、修改记录操作)时,要先select,避免出现误删除,确认无误才能更新语句。这两点很多程序员搞不懂,原因就是一个新入职的阿里巴巴员工。

当时的阿里巴巴数据库可以直接用bash进行后台的增删操作,各种监管和操作日志机制都不是很完善。新入职的程序员在使用存储过程进行update极度重要的表的时候,没有加where条件就直接潇洒了敲了一下回车键。还好当时他没有跑路,而是用颤抖的手给DBA打了电话,还好oracle在没有保存前回滚是有效果的,没有造成太大的后果。

如何防止数据被程序删除呢?

1、通常,架构设计上需要注意,重要数据永远不要直接删除,标记为“删除”状态。不能给程序的用户allprivileges。Insert、delete、update各类命令的权限单独赋予。

2、应用的网络进行分层设计。接入层,应用层,数据层。数据层只对固定的应用服务器开放。数据库永远只放在内网。

3、周密的备份,即使管理员跑路也不怕

月明千里,一个敲代码的程序员小黑,


转载请注明:http://www.aierlanlan.com/rzgz/4833.html