前言
开发者通常会购买自己的服务器去搭建一套自己的开发环境,由于服务器防护等级较低、弱密码或者疏于防护,服务器更容易遭到攻击者攻击。
数据库被攻击是一种非常常见的网络安全问题,黑客通过利用漏洞或弱密码等手段进入您的服务器并获取敏感数据,这些数据可能包括个人身份信息、财务信息和其他敏感信息。黑客可能会将您的数据窃取、删除或加密,使您无法访问或使用它们。
![在这里插入图片描述](https://img-blog.csdnimg.cn/62034800964a4ff2a60a2891064a770b.png
恢复方案
● 通过MySQL binlog恢复
● 通过脚本+Linux自动任务恢复
第一种方案是MySQL本身提供的一种数据恢复方案,常用于误删表数据场景。而自动任务更像是没有其他解决思路时的兜底方案。
本文不过多介绍通过binlog恢复数据,但可参考:
MySQL以系统基础服务方式
#!/bin/bash
# 定义备份目录和文件名
backup_dir="/var/backups/mysql"
backup_file="freemore_renew-$(date +%Y-%m-%d).sql"
# 定义 MySQL 登录信息
mysql_user="your_mysql_user"
mysql_password="your_mysql_password"
mysql_database="your_database_name"
# 创建备份目录(如果不存在)
mkdir -p "$backup_dir"
# 备份数据库
mysqldump -u "$mysql_user" -p"$mysql_password" "$mysql_database" > "$backup_dir/$backup_file"
# 压缩备份文件
gzip "$backup_dir/$backup_file"
# 删除 7 天前的备份文件
find "$backup_dir" -name "*.sql.gz" -type f -mtime +7 -exec rm {} \;
MySQL以Docker服务方式
#!/bin/bash
# 定义备份目录和文件名
backup_dir="/var/backups/mysql"
backup_file="freemore_renew-$(date +%Y-%m-%d).sql"
# 定义 MySQL 登录信息和容器名称
mysql_user="your_mysql_user"
mysql_password="your_mysql_password"
mysql_database="your_database_name"
container_name="your_container_name"
# 创建备份目录(如果不存在)
mkdir -p "$backup_dir"
# 备份数据库
docker exec "$container_name" mysqldump -u "$mysql_user" -p"$mysql_password" "$mysql_database" > "$backup_dir/$backup_file"
# 压缩备份文件
gzip "$backup_dir/$backup_file"
# 删除 7 天前的备份文件
find "$backup_dir" -name "*.sql.gz" -type f -mtime +7 -exec rm {} \;
linux自动任务
创建完脚本后,将脚本放入自动任务即可:
要在每天自动运行脚本,请将其添加到 crontab 中。打开终端并运行以下命令:
crontab -e
然后将以下行添加到文件的末尾:
0 0 * * * /path/to/backup-script.sh
这将在每天午夜 12 点运行脚本。请将 /path/to/backup-script.sh 替换为实际脚本的路径,执行时间也请根据个人或团队按需修改。
预防方案
- 尽量不要使用服务默认端口
- 不要使用弱密码
- 在服务器对应服务后台开启防火墙配置
- 定时备份