目标
- 设置mysql数据库连续登录失败X次锁定X分钟。
- 通过定时任务自动备份数据库,只保留最近三天的备份。
一、设置登录失败处理
1、进入mysql命令行
mysql -uroot -p
2、安装mysql插件
install plugin CONNECTION_CONTROL soname 'connection_control.so';
install plugin CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS soname 'connection_control.so';
#查看是否安装成功
show variables like 'connection_control%';
如下图则安装成功!
3、配置锁定策略
#1、退出mysql命令行
exit
#2.编辑mysql配置文件
vim /etc/my.cnf
在配置文件中插入内容:
#失败次数
connection-control-failed-connections-threshold=3
#锁定时间,单位毫秒
connection-control-min-connection-delay=60000
重启mysql服务,即配置成功
systemctl restart mysqld
二、备份数据库
1、编写shell脚本
#!/bin/bash
#当前时间格式化输出
ctime=$(date '+%Y%m%d%H%M')
#使用当前时间的方式命名备份的sql文件
name=$ctime".sql"
#备份前先检查存放sql备份的目录里面的文件是否过期(3天),过期则删除掉
find /home/yu/shell/sql-back/ -type f -mtime +3 | xargs rm -rf
#开始将数据库转存为sql文件
mysqldump -uroot -pxxxxx mysql > $name
#将转存的sql文件移动到专门用于存放备份的目录中
mv ./$name /home/yu/shell/sql-back/
使用说明:
find和mv后面的路径请确保真实存在,或者是更换为实际应用场景需要的目录。
2、配置定时任务
#编辑配置文件
vim /etc/crontab
在底部插入内容:
#我这里设置的是每天11点52分,以root用户执行备份脚本
52 11 * * * root cd /home/yu/shell/ && ./back.sh
说明:
52 11 * * * root cd /home/yu/shell/ && ./back.sh
#分 时 天 月 周 执行用户 执行的动作
#我这里使用的时先进入目录再执行,这样的好处是可以避免脚本中可能会有相对路径。
#脚本里存在相对路径定时任务执行时可能会找不到。
注意插入内容后重启定时任务的服务!
systemctl restart crond
完成以上操作,即可设置成功!