家里搞了台旧电脑做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的文件再上传一遍;
下次再试。