记一次mysql数据库被勒索(上)
家里搞了台旧电脑做NAS,安装了nextcloud,选择了mysql做为数据库。
当时也没有想太多,mysql数据库密码随便设置了个123456,用的一切正常。
然后,听说可以找电信申请换个公网IP的,于是想申请个域名,可以在外面访问nextcloud。
打10000号倒是很顺利地开通了公网IP,感觉用的挺好的。就差一个域名了,就等于拥有了一台私人服务器,一阵窃喜。
然后忙着挑域名去了~~~心情大好~~
前天回家,想把手机文件移一些到NAS上,结果发现连接不上了。打开电脑访问,提示服务有问题。

赶紧看一下nextcloud的日志:提示数据表不存在。
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'nextcloud.oc_appconfig' doesn't exist

登陆mysql查看,nextcloud的数据库下面表全没了,只留下了一个WARNING( 一开始还以为是mysql出错了,没想到WARNING是个表。。。)
查询WARNING一看,里面留一句话,虽然有些字符乱码没显示出来,结合网上搜索的结果,应该是让我支付0.03BTC来恢复nextcloud数据

心里一凉,这是遭遇勒索了吧!!!
赶紧再看一下nextcloud里面的照片和视频,不要也被删除了,那真的是要哭出来了。
不幸中的万幸,nextcloud的文件还在,数据库里面只是存一些nextcloud的配置和文件路径,真正的文件应该没有丢失。
回想起来,刚开公网IP时,特地用公网IP试了一下,nextcloud无法直接访问,好像是要修改配置文件,才能从外网访问。
当时忙着去上班,没空研究,就先扔在那了,居然避免了一次损失。
于是,赶紧把防火墙启动起来(对,为了方便,一向是直接把防火墙关了的。。。应该不止我一个人这么干吧。。。)
下一步,就要想办法恢复nextcloud了。
首先,想到一个办法,nextcloud重新配置一下数据库,是不是就可以直接恢复使用了呢?
毕竟nextcloud的文件都在,说不定nextcloud可以自动识别文件目录里面的内容。
抱着一丝希望,再启一个mysql环境(用的docker,确实方便),然后把nextcloud目录下的config/config.php 删除掉,并且touch 一个config/CAN_INSTALL文件

刷新浏览器,就可以出现第一次安装时,配置数据库的界面。
配置到新数据库, 想创建跟之前一样的管理员帐号,会提示该用户已存在文件。
将nextcloud下的root目录改名,重新配置一下nextcloud,成功。

这时候nextcloud 又会创建一个root目录,里面是nextcloud默认的一些文件例子。
于是直接将新的root目录删除,换成旧的root目录,以便确认nextcloud会不会自动识别目录内容。
结果。。。。不行!!
nextcloud上面显示的文件内容,还是默认的例子(证明这些文件信息,应该是从mysql数据库里面读取出来,而不是读取实际的文件目录)。

剩下还有两个办法可以尝试的:
1,恢复mysql数据库;
2,将nextcloud的文件再上传一遍;
下次再试。
记一次mysql数据库被勒索(上)的更多相关文章
- 记一次mysql数据库被勒索(中)
背景在上一篇文章里面已经提过了. 现在面临的问题是nextcloud没有mysql数据库,用不起来了. 因为文件没丢,一种方法是启动新的mysql数据库,把文件重新提交一次. 为了程序员的面子,没有选 ...
- 记一次mysql数据库被勒索(下)
背景: nextcloud的mysql数据库被黑,删库勒索.参考:记一次mysql数据库被勒索(上) mysql数据库恢复成功,nextcloud还是无法连接.参考:记一次mysql数据库被勒索(中) ...
- 初码-Azure系列-记一次MySQL数据库向Azure的迁移
初码Azure系列文章目录 还在继续给客户迁移不同的系统到Azure,这一次是一个系统的MySQL数据库要迁移,将迁移过程记录一下 原系统环境 数据库版本:MySQL Community Editio ...
- 记一次mysql数据库失而复得过程
背景: 由于是自己买的vps搭建的博客,用的是军哥的一键lnmp源码编译安装的,文章也就几篇,对备份并不太重视,想着等服务器快到期的时候备份一下不就行了. 后来在该服务器上测试lnmp分别编译编译安装 ...
- MySQL数据库索引(上)
上一篇回顾: 1.数据页由七部分组成,包括File Header(描述页的信息).Page Header(描述数据的信息).Infimum + Supremum(页中的虚拟数据最大值和最小值).Use ...
- 记一次Mysql数据库Kill完之后启动不起来的解决方案
在Mysql运行的时候,有时候会stop不了,这时候我们就会想直接把他的进程kill掉. 但是,有时候kill完了之后,在去start它就会直接抛异常了... ERROR! The server qu ...
- 记一次MySQL数据库拒绝访问的解决过程
问题背景 用wordpress搭博客,数据库采用MySQL.为了调试方便,创建账户my_account ,允许它从任意主机访问数据库. CREATE USER `my_account`@'%' IDE ...
- mysql数据库在linux上的不同登录方式和权限
在我的上两篇博文里,一篇是安装,一篇是配置远程登录, 提君博客原创 >>提君博客原创 http://www.cnblogs.com/tijun/ << 所以我的mysql的 ...
- 记一次MySQL数据库导入错误
昨天在转数据的时候,控制台报出了下面这个warning: Warning: Data truncated for column '控制距离' at row 1 字面上意思应该是:控制距离这一字段在第一 ...
随机推荐
- 设计模式:Iterator模式
目的:将数据的存储和数据的查询分开,降低数据的耦合性 继承关系图: 例子: //定义迭代器接口 template<typename T> class Iterator { public: ...
- 题解 洛谷 P3185 【[HNOI2007]分裂游戏】
首先可以发现,当所有巧克力豆在最后一个瓶子中时,就无法再操作了,此时为必败状态. 注意到,对于每个瓶子里的巧克力豆,是可以在模\(2\)的意义下去考虑的,因为后手可以模仿先手的操作,所以就将巧克力豆个 ...
- 字符编码笔记:ASCII,Unicode 和 UTF-8个人理解
一.ASCII 码 我们知道,计算机内部,所有信息最终都是一个二进制值.每一个二进制位(bit)有0和1两种状态,因此八个二进制位(字节(Byte )是计算机信息技术用于计量存储容量的一种计量单位,作 ...
- mysql查看各表占磁盘空间
select TABLE_NAME, concat(truncate(data_length/1024/1024,2),' MB') as data_size, concat(truncate(ind ...
- git pull & git fetch
Git中从远程的分支获取最新的版本到本地有这样2个命令:1. git fetch:相当于是从远程获取最新版本到本地,不会自动merge git fetch origin mastergit log ...
- vue+springboot文件上传
//vue element-ui组件 <el-upload style="position: relative;top: -40px;left: 240px;" ...
- php判断是否为数字
判断是否为数字 使用is_numeric函数,可以判断数字或者数字字符串 $variables = [ 0, 36, 3.6, .36, '36', 'a36', 044, //8进制 0x24, / ...
- Seaborn基础3
import seaborn as sns import numpy as np import matplotlib.pyplot as plt sns.set(rc = {"figure. ...
- 11-14序列化模块之json、pickle、shelve
序列化的目的 1.以某种存储形式使自定义对象持久化: 2.将对象从一个地方传递到另一个地方. 3.使程序更具维护性. 序列化--转向一个字符串数据类型序列--及时字符串 何处用到: 数据存储 网络上传 ...
- Python常用标准库之datetime、random、hashlib、itertools
库:具有相关功能模块的集合 import sys.builtin_module_names #返回内建模块的名字modules 查看所有可用模块的名字 1.1.1获取当前日期和时间 from date ...