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;

    参考:

  • 相关阅读:
    ORACLE时间函数(SYSDATE)简析
    RestTemplate请求
    Java中ASM框架详解
    java进阶
    Java,Mysql-根据一个给定经纬度的点,进行附近500米地点查询–合理利用算法
    JAVA程序员必看的15本书-JAVA自学书籍推荐
    Linux curl命令详解
    Java 集合系列06之 Vector详细介绍(源码解析)和使用示例
    腾讯信鸽推送Android SDK快速指南
    信鸽推送.NET SDK 开源
  • 原文地址:https://www.cnblogs.com/cdfive2018/p/14803004.html
Copyright © 2011-2022 走看看