华为云云耀云服务器L实例评测 | 由于自己原因导致MySQL数据库被攻击 & binlog日志文件的理解

引出


1.不出意外的话,就出意外了;
2.硬件有价,数据无价,程序员不删东西;
3.删东西的程序员不是好。。。;

起因(si因)

最近搞了一台华为云服务器玩,建了一个MySQL的docker数据库,密码设置得及其简单,写博客的时候还暴露了自己服务器的ip,结果不出意外就出意外了。

在这里插入图片描述

20230911早上数据库还好好的;

202309002035一看,Navicat连不上了;

在这里插入图片描述

报错:

1130-Host '114.222.228.160’is not allowed to connect to this MySQL server

解决报错

搜了一下网上的教程

在这里插入图片描述

update user set host = ‘%’ where user = ‘root’;

在这里插入图片描述

诶嘿,连上了

在这里插入图片描述

不出意外,就出意外了

程序员bug理论:解决一个bug,会出现另外的bug

打开数据库

在这里插入图片描述

what???

在这里插入图片描述

找华为云求助

在这里插入图片描述
勒索病毒:
勒索一般是通过主机或者数据库弱口令等植入病毒,并勒索比特币;
1、不建议支付赎金,因为大多数赎金支付了也无法获得解密;
2、若数据很关键,建议寻求第三方专业解密公司做数据恢复;若数据不关键,则建议择机重装系统;
3、修改所有管理端口的账号和密码,并配置强口令。建议使用 安全组策略 限制访问,并禁止将管理端口和管理后台开放到互联网,仅开放必要的业务端口。
4、数据恢复完毕后,立即对 ECS 配置定期快照策略,同时做好异地数据备份工作。

教训:备份

在这里插入图片描述

教训:密码

我之前的密码是:123

解决

1.改密码

update user set authentication_string=‘XXXXX’ where user=‘root’;

在这里插入图片描述

然而有出现了新的问题。。。。算了重建一个MySQL吧

2.新建一个MySQL,密码设置复杂一点

在这里插入图片描述

3.开启 binlog备份

在这里插入图片描述

MySQL的binlog日志文件

初识binlog

MySQL 的二进制日志可以说 MySQL 最重要的日志了,它记录了所有的 DDL 和 DML(除
了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间,MySQL 的二进 制日志是事务安全型的。

一般来说开启二进制日志大概会有 1%的性能损耗。二进制有两个最重要的使用场景:

  • 1.MySQL Replication 在 Master 端开启 Binlog,Master 把它的二进制日志传递给 Slaves
    来达到 Master-Slave 数据一致的目的,这就是主从复制;

  • 2.数据恢复,通过使用 MySQL Binlog 工具来使恢复数据;

binlog的格式

MySQL Binlog 的格式有三种,分别是 STATEMENT, MIXED, ROW。在配置文件中可以选择配
置 binlog_format= statement|mixed|row。

  • statement:语句级,binlog 会记录每次一执行写操作的语句。比如

    update user set create_date=now()

    优点:节省空间。
    缺点:有可能造成数据不一致。

  • row:行级, binlog 会记录每次操作后每行记录的变化。
    优点:保持数据的绝对一致性
    缺点:占用较大空间

  • mixed:statement 的升级版,一定程度上解决了,因为一些情况而造成的 statement
    模式不一致问题,默认还是 statement,一些会产生不一致的情况还是会选择row。

应用场景

MySQL的binlog(二进制日志)是MySQL数据库引擎提供的一种日志文件,用于记录数据库的更改操作。它包含了对数据库进行的所有修改操作,例如插入、更新和删除等。

binlog的主要作用是用于数据恢复、数据备份和数据复制。以下是一些常见的用途:

  • 数据恢复:通过使用binlog,可以将数据库恢复到特定的时间点或特定的事务状态。通过将binlog应用到数据库中,可以重放和还原之前的操作。

  • 数据备份:通过定期备份binlog文件,可以实现增量备份。将完整备份与binlog备份结合使用,可以实现更灵活和高效的数据备份策略。

  • 数据复制:通过读取和解析binlog,可以将数据库的更改操作复制到其他MySQL实例,实现主从复制。这对于实现高可用性、负载均衡和数据分发非常有用。

补充知识:DDL DML等

DDL和DML是数据库操作中常用的两种语言,用于定义和操作数据库对象和数据。此外,还有DCL和TCL这两种语言。

DDL(Data Definition Language):DDL用于定义数据库对象,例如表、视图、索引等。DDL语句包括创建、修改和删除数据库对象的操作。常见的DDL语句有:

CREATE:用于创建数据库对象,例如创建表、视图等。

ALTER:用于修改数据库对象的结构,例如修改表结构、添加列等。

DROP:用于删除数据库对象,例如删除表、视图等。

DML(Data Manipulation Language):DML用于操作数据库中的数据,例如插入、更新和删除数据。DML语句不会改变数据库对象的结构,只是对数据进行操作。常见的DML语句有:

INSERT:用于插入数据到表中。

UPDATE:用于更新表中的数据。

DELETE:用于删除表中的数据。

SELECT:用于查询表中的数据。

DCL(Data Control Language):DCL用于控制数据库的访问权限和安全性。DCL语句用于授权和撤销用户对数据库对象的访问权限。常见的DCL语句有:

GRANT:用于授予用户对数据库对象的访问权限。

REVOKE:用于撤销用户对数据库对象的访问权限。

TCL(Transaction Control Language):TCL用于控制数据库事务的提交和回滚。TCL语句用于管理数据库事务的一致性和持久性。常见的TCL语句有:

COMMIT:用于提交事务,将事务中的操作永久保存到数据库中。

ROLLBACK:用于回滚事务,撤销事务中的操作。

SAVEPOINT:用于设置保存点,可以在事务中进行部分回滚。

这些语言一起构成了SQL(Structured Query Language)的核心部分,用于定义和操作关系型数据库中的结构和数据。不同的数据库管理系统可能会有一些差异,但基本的DDL、DML、DCL和TCL语句在大多数关系型数据库中都是通用的。

DML

对数据库表中的记录进行改变的sql语句

添加

insert into emp(empNum,gender,age,sal,job,dept,score,name) values('N005','男',20,15000,'护士','妇产科',90,'小七')

删除

delete from emp where id=15;

修改

update emp set gender='女' where id=14

DQL

对数据库表中的记录进行查询的sql语句

查询

select * from emp where id=14

总结

1.不出意外的话,就出意外了;
2.硬件有价,数据无价,程序员不删东西;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Arya's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值