mariadb数据库安全配置

2021-6-22 10:49:049

#linux#mysql#mariadb

57

前言

  淦,自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脚本自动备份
  • 打开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开启成功了