当前位置: 首页 > 科技观察

数据库被删的感想

时间:2023-03-17 11:08:32 科技观察

1.数据库为什么被删?同事小L最近负责整理数据库初始化脚本。在演示环境中导出数据库脚本后,他在另一台服务器上执行数据库脚本。最后因为操作过程中打开的窗口太多,他没有注意到环境。当时他开了很多窗口,有demo环境,有自己的测试环境,还有开发环境,一堆windows。最后执行的时候发现执行错了,把demo环境杀掉了。demo环境有很多我们的数据,主要是给客户演示用的。是的,数据很重要。2、数据库被删除后,首先采取的措施是什么?数据库被删除后,第一个措施就是想办法恢复。但是因为没有开启binlog,也没有定时备份数据库的脚本,所以最终没能恢复。经理不得不采取一些措施来解决这个问题。3、我的反思,发现了哪些问题?虽然不是我直接负责,但我对此也有一定的责任。我在这次数据库删除事件中发现的最大问题是数据库安全策略不够完善。数据库安全策略包括物理安全、访问控制、数据备份等。1.物理安全物理安全是安全防范的基础,主要指保证数据库服务器、数据库所在环境以及相关的物理安全。网络。2.访问控制访问控制是基础安全的核心。包括账户管理、密码策略、权限控制、用户认证等,主要从与账户相关的方面维护数据库的安全。3、数据备份定期进行数据备份是减少数据丢失的有效手段,可以在数据库遭到破坏(被恶意或误操作)后恢复数据资源。这也是您的数据库安全策略的重要组成部分。这次的问题主要出在访问控制和数据备份上。权限控制没有做好,让每个开发者都可以对demo环境(demo环境相当于生产环境)、测试环境、开发环境的数据库进行增删改查,以及对表中的表增删改查图书馆。一般来说,数据库和数据库中的表及特定字段是不能随意增删改改等的,尤其是相当于生产环境的演示环境。访问控制只是数据库安全策略的一种手段,但这种手段需要与数据备份相结合才能称为双重保护。4.我发现的问题的解决方案是什么?对于访问控制级别,我的解决方案是:以演示环境(相当于生产环境)为例,限制数据库只能内网访问,对应的用户只能访问授权的数据库,命令如下:GRANTALLPRIVILEGESON数据库名.*TO'数据库特定用户'@'192.168.52.317'IDENTIFIEDBY'数据库特定用户密码'WITHGRANTOPTION;FLUSHPRIVILEGES;EXIT;如果其他微服务需要连接数据库但是在不同的服务器环境下,也可以通过上面的ip来控制,只是需要创建相应的用户。因为有些需求可能需要公网访问数据库,所以也可以通过上面的措施来更精细地控制权限。可能有人会觉得输入命令来控制好像很麻烦,别着急,有一个工具已经帮我们解决了这个问题(数据库访问控制),那就是phpmyadmin。对于数据备份层面,我的方案有两种:一是定时备份,脚本自动化备份(需要结合定时任务)二是实时备份,从数据库本身做起,开启binlog。在my.conf中配置如下:[mysqld]#Openbinloglog-bin=mysql-binserver-id=1binlog_format=ROW修改配置后记得重启mysql。登录mysql查看binlog是否开启,执行如下命令:showvariableslike'log_%';效果图如下(表示开启了binlog):目前我落地了两种,一种是实时备份(开启了binlog),另一种是定时备份(结合脚本和定时任务)。五、小结无意间想起欧阳修的一句话《五代史伶官传序》,让我印象深刻,“夫之祸,常积于微,智勇多困于溺”。在此之前,有前车之鉴。一个Java同事的阿里云服务器因为数据库密码太简单(需要比特币兑换)被黑客绑架了。我对此采取了一些措施,但措施并不全面,这个删除可能来自之前的警告。