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

文章讲述了作者在使用华为云服务器时遇到MySQL连接失败的报错,通过修改密码、新建数据库和启用binlog备份,学习了数据安全的重要性和备份策略。作者强调了备份和强密码设置在防止数据丢失和保护数据库安全中的关键作用。
摘要由CSDN通过智能技术生成

引出


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.硬件有价,数据无价,程序员不删东西;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Arya's Blog

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

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

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

打赏作者

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

抵扣说明:

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

余额充值