前言
淦,自2月份我的数据库被人黑过一次,昨天也就是2021/6/18又被人黑了,又是熟悉的删库加勒索比特币的操作。2月份那次被黑我并没有怎么重视,因为只是把我的一份课程作业的数据库数据清空(而且已经答辩完了), 不痛不痒,所以只是修改了数据库的连接密码就没有作其他修改了。 但是这次就不一样了!!!我写了三个月共计四十几篇博文都这么没了!!!这波是被打痛了,知道长记性了。😭😭😭 期间我也尝试过数据恢复,用过extundelete和ext3grep软件,试图通过恢复.frm表文件来恢复数据,但是好像硬盘的数据已经被覆写了,很可惜。 总结一下此次事故主要原因还是我没有重视数据库的安全,也没有定期备份的习惯,mariadb的binlog功能也没有打开,导致失去了恢复数据的可能性。
环境
- 操作系统:centos7.0
- 数据库: 5.5.68-MariaDB MariaDB Server
配置
- 首先当然是要修改原来的密码,换一个更加复杂的
mysql
#打开sql服务use mysql
#切换到mysql数据库update user set password=password('新密码') where user='root';
#修改root密码
- 修改mysql配置文件
vim /etc/my.cnf
- 去掉上图划红线的部分,这个
skip-grant-tables
是用于跳过数据库权限验证,当初我在自己的电脑上连接云服务器总是出现连接失败的问题。为了解决该问题,我设置了该配置,但后果就是数据库安全性降低,它会让本地的连接跳过验证,因此这次就要去掉这个配置选选。
- 修改mysql的端口号
- mysql的默认端口号是3306,很容易被网络上的自动嗅探脚本嗅探到,因此修改mysql服务端口号可以大大降低被嗅探的可能性和频率。
- 从网上扒了张图,依旧是
vim /etc/my.cnf
修改/etc/my.cnf文件修改配置(当然我的端口号是另一个)
- 数据库的定期备份
- 使用navicat的备份
- 优点:可视化,方便,在自己的电脑上就能搞
- 缺点:需要手动备份
- linux脚本自动备份
- 使用navicat的备份
- 打开mysql的binlog功能 参考博文
vim /etc/my.cnf
- 在[mysqld] 下写入
log_bin =/var/lib/mysql/bin-log #开启 Binlog 并写明存放日志的位置
log_bin_index =/var/lib/mysql/mysql-bin.index #指定索引文件的位置
expire_logs_days = 7 #日志缓存日期
server_id = 0002 #指定一个集群内的 MySQL 服务器 ID,如果做数据库集群那么必须全局唯一,一般来说不推荐 指定 server_id 等于 1
binlog_format = ROW # Binlog 的日志模式
- 重启数据库
systemctl restart mariadb.service
- 检查是否开启binlog功能
- 登录mysql
mysql -u root -p
- 查询数据库
show global variables like 'log_bin';
- 看到如下的查询结果就代表binlog开启成功了
- 登录mysql