最近某天打開業余開發的小程序,發現訪問不了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
;
參考:
- 設置MySQL數據庫的遠程連接權限 https://help.aliyun.com/knowledge_detail/40792.html
- 阿里雲中Mysql修改root密碼並設置遠程訪問 https://blog.csdn.net/zhoukun915684080/article/details/105162435/
- MySQL授權與用戶權限查詢 https://www.jianshu.com/p/0654d4c02194
- MySQL授權查詢_MySQL授權以及狀態查詢 https://blog.csdn.net/weixin_28518991/article/details/113170683
- Mysql創建用戶后,執行grant授權命令,提示can't find any matching row in the user table https://blog.csdn.net/lambert310/article/details/53377301/
- ERROR 1133 (42000): Can't find any matching row in the user table https://www.cnblogs.com/Charles-Yuan/p/9618606.html
- 解決Error(1133): Can’t find any matching row in the user http://www.002t.cn/yingxiaoyuwangluo/834.html