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

目录

  • 引出
  • 起因(si因)
    • 解决报错
    • 诶嘿,连上了
  • 不出意外,就出意外了
    • 打开数据库
    • what???
  • 找华为云求助
    • 教训:备份
    • 教训:密码
  • 解决
    • 1.改密码
    • 2.新建一个MySQL,密码设置复杂一点
    • 3.开启 binlog备份
  • MySQL的binlog日志文件
    • 初识binlog
    • binlog的格式
    • 应用场景
    • 补充知识:DDL DML等
      • DML
      • DQL
  • 总结

引出


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

起因(si因)

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

在这里插入图片描述

20230911早上数据库还好好的;

202309002035一看,Navicat连不上了;

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

报错:

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

解决报错

搜了一下网上的教程

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

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

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

诶嘿,连上了

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

不出意外,就出意外了

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

打开数据库

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

what???

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

找华为云求助

华为云云耀云服务器L实例评测 | 由于自己原因导致MySQL数据库被攻击 & binlog日志文件的理解_第7张图片
勒索病毒:
勒索一般是通过主机或者数据库弱口令等植入病毒,并勒索比特币;
1、不建议支付赎金,因为大多数赎金支付了也无法获得解密;
2、若数据很关键,建议寻求第三方专业解密公司做数据恢复;若数据不关键,则建议择机重装系统;
3、修改所有管理端口的账号和密码,并配置强口令。建议使用 安全组策略 限制访问,并禁止将管理端口和管理后台开放到互联网,仅开放必要的业务端口。
4、数据恢复完毕后,立即对 ECS 配置定期快照策略,同时做好异地数据备份工作。

教训:备份

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

教训:密码

我之前的密码是:123

解决

1.改密码

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

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

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

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

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

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

你可能感兴趣的:(运维,数据库,服务器,mysql)