zoukankan      html  css  js  c++  java
  • 记录一次阿里云数据库表数据被删恢复过程

    最近某天打开业余开发的小程序,发现访问不了js报错,ssh登录服务器,发现上面各微服务正常,MQ、ES也正常,在某服务日志里看到了MySQL数据库连接
    报错。服务器用的阿里云ECS,CPU2核、内存8G,在上面安装了MySQL,通过IDEA里连接时提示[28000][1045] Access denied for user root@x.x.x.x
    之前一直是能连上的,并且几个月前对程序进行一些优化和完善,开发过程中编写过sql执行都是没问题的。

    在服务器上直接用命令mysql -uroot -pxxx 发现数据库能连。
    show databases;
    use cdfive2019;
    show tables;
    select * from cdfive_song;
    发现表里没数据了,查了其它几张表,数据都是空的。
    该数据库和小程序主要是业余学习使用,上面有一些学习的demo演示和博客分享,数据量不大,除了日志表,最大只有几百条记录。
    程序在github上开源,数据库用户名/密码配置在了yml里,在阿里云控制台也打开了3306端口,方便平常用客户端连接使用。
    在业余有时间的时候,对功能和代码逐步进行建设和优化,已运行几年都没问题。
    有点惊讶,在想是不是有其他人连了这个库,把数据表被清空了。
    疑惑间突然看到show databases里多了一张README表,
    select * from README;
    结果如下:

    以下数据库已被删除:cdfive2019, cdfive_mp3。 我们有一个完整的备份。 要恢复它,您必须将0.006比特币(BTC)支付给我们的比特币地址xxxxxx。 
    有关说明,请通过xxx@xxx.com通过电子邮件联系我们。 任何与付款无关的邮件都将被忽略!
    

    原来是被黑客攻击了,提示要付款才能找回被删除的数据。
    在公司里几乎天天听到同事讨论炒币、股票等各种新闻和实战,没想到这里也是要求以比特并付款。
    听说一个比特币价格很高,0.006个估计也不少。
    感觉这黑客不太厚道,一个学习类分享技术、demo的小网站,也给数据删了。
    并且找错了人,自己不懂币,也没有币或股票账户,没有能力支付。
    幸运的是,之前有对云上的数据库定期进行备份,找到备份的数据恢复即可。

    查看用户:
    select host,user,authentication_string from mysql.user;
    发现多了一个mysqld不限ip的用户,将它删除。

    删除用户:
    drop user mysqld@'%';

    查看授权:
    show grants;

    对固定ip授权:
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'x.x.x.x' IDENTIFIED BY 'xxx';
    不使用%对所有ip授权,仅对固定ip授权,减少可能的恶意访问。

    刷新授权:
    flush privileges;

    参考:

  • 相关阅读:
    http和https的区别与联系
    HTTP请求/响应报文结构
    Java并发包中Lock的实现原理
    Java多线程基础——Lock类
    深入理解Java并发之synchronized实现原理
    ConcurrentHashMap 的实现原理
    【Java集合学习】HashMap源码之“拉链法”散列冲突的解决
    趣谈Java变量的可见性问题
    Java中CAS详解
    LockSupport的park和unpark的基本使用,以及对线程中断的响应性
  • 原文地址:https://www.cnblogs.com/cdfive2018/p/14803004.html
Copyright © 2011-2022 走看看