該圖片由Robinraj Premchand在Pixabay上發佈mysql
個人小程序是在5月26號的時候上線的,運行了還沒幾天,5月30號的時候就有一個學弟告訴我說小程序用不了了,晚上回家打開電腦查看數據庫的時候才發覺大事很差!sql
個人ytools數據庫下的數據表去哪了,怎麼就剩下一個WARING了????shell
嚇得我趕忙百度了一下數據庫
我擦,這是被攻擊了嗎?爲何騰訊雲都沒有給我安全警報啊???小程序
不過有沒有安全警報都是次要的,最主要的事情仍是要弄清楚緣由是啥,而後想辦法補救和預防,僅以這篇文章記錄下本身被攻擊後的經歷。vim
查了一些資料發現,其實被刪庫的事件家常便飯,2016年-2017年間,就曾出現過大量MySQL數據庫被攻擊,黑客留下QQ號,並索要高額恢復費的事情,哪怕是如今這種事情也常常發生。其實總的來講仍是由於咱們在服務器安全防範方面,意識至關不夠,僥倖心理嚴重(就像到如今我也不懂我這個小屁民啥事也沒作爲啥還要搞我同樣)。如下兩種狀況的MySQL最容易被攻擊。安全
不少人圖省事,將服務器密碼設置簡單,方便記憶與登陸,這每每給黑客留下破解空間。一旦服務器密碼被破解,那黑客將能夠直接登陸到服務器,肆意修改數據、刪除數據。針對這項,在設置密碼時,建議:使用字母、數字、字符組合的密碼,儘可能在8位10位以上。不按期更換密碼。bash
不少新手在使用數據庫時,沒有進行權限設置(或者純粹就是圖省事,項目跑起來就好了),網站程序直接鏈接root權限,一旦網站程序被破解,root帳號密碼也將被hei客獲取。MySQL涉及權限的表一共5個,最重要的權限表:user、db。user表裏除了root localhost有全部權限外,其餘 xxxx %一律沒有權限。須要開通權限要在db表裏。服務器
總之千萬不要用root以及管理員權限去運行!同時將權限限制到最小!網站
下面是我查閱資料找到的一些常規的安全防範措施:
針對上述方法措施,在這給出修改過程。
這次實驗的環境爲:騰訊雲的Ubuntu Server 18.04,數據庫爲MySQL 5.7.25。
服務器密碼的修改咱們直接去控制檯更改下就能夠了,很少說,這裏說下MySQL數據庫root密碼的更改。
mysql -u root -p
複製代碼
而後輸入原先的root密碼進入數據庫操做(mysql shell)
use mysql;
複製代碼
update user set authentication_string=password('新密碼') where user='root' and host='localhost';
複製代碼
Tips:這裏說明下,在MySQL 5.7
password
字段已從mysql.user
表中刪除,新的字段名是authenticalion_string
。
flush privileges;
複製代碼
sudo service mysql restart
複製代碼
咱們知道MySQL的默認端口是3306,爲了安全起見,建議將MySQL的默認端口號修改爲本身想要的(有女友的就改爲女友生日,這樣就忘不掉了)。
查了不少資料說MySQL的配置文件在/etc/mysql/my.cnf
路徑下,可是當我查看內容的時候卻給我下面這樣的信息:
這個文件裏面根本沒有任何參數設置(這是因爲不一樣的mysql版本致使的,再次申明下個人系統版本爲Ubuntu18.04,MySQL 5.7.25),只看到下面兩行設置,表示導入這兩個目錄裏面的配置文件。
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
複製代碼
分別嘗試打開查看內容後咱們發現其實MySQL的相關配置都位於/etc/mysql/mysql.conf.d/mysqld.cnf
裏,進入目錄後執行cat mysql.cnf
能夠看到在**[mysqld]標籤下有不少參數信息,其中有一個參數就是port**,咱們把它設置成本身想要的端口號就能夠了(記得用vim時要加上sudo啊)。
最後重啓下mysql就能夠了。
sudo service mysql restart
複製代碼
MySQL有一套權限系統,他的主要功能是證明鏈接到一臺給定主機的用戶,而且賦予該用戶在數據庫上的SELECT、INSERT、UPDATE和DELETE權限。基於安全考慮root帳戶通常只能本地訪問,可是在開發過程當中可能須要打開root的遠程訪問權限,若是正式上線的時候沒有關閉mysql的遠程訪問權限,就有可能會被利用而後刪庫。
mysql -u root -p
複製代碼
而後輸入原先的root密碼進入數據庫操做(mysql shell)
use mysql;
複製代碼
update user set host = "localhost" where user = "root" and host= "localhost";
複製代碼
flush privileges;
複製代碼
sudo service mysql restart
複製代碼
上述內容是我本身針對這次服務器被攻擊後查閱相關資料整理出來的,由於對這方面我也不是很懂,也只能作些簡單的防禦措施,僅供參考,若是你們有什麼建議的能夠在評論區或者公衆號後臺給我留言。