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