萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> 數據庫綜合 >> MySQL安全問題的一點心得體會

MySQL安全問題的一點心得體會

這是一篇關於MySQL安全問題的一點心得體會,我們一起去看看吧!

我們知道,在安裝完MySQL後,它會自動創建一個root用戶和一個匿名用戶,其初始密碼都是空,對於前者,很多參考資料上都會提醒大家要注意及時設定一個密碼,而忽略了後者,大概是因為後者默認設定為只能在本機使用的緣故吧。

但如果你的MySQL是要提供給Web服務器作數據庫服務的,忽略這個匿名用戶的代價可能相當慘重,因為在默認設置下,這個匿名用戶在localhost上幾乎擁有和root一樣的權限,這時候,如果你的客戶擁有上傳腳本文件、腳本文件可以進行MySQL數據庫操作(比如允許操作MySQL的php)的權限已經可能將你的MySQL改動得面目全非了:

我今天幫朋友整理他的主頁空間的時候,試著寫了一個很簡單的執行sql語句的php文件上傳上去,其中連接字中的user,password我都試著置空,host=localhost,結果發現我的sql語句可以執行,於是執行select * from MySQL.user察看用戶權限,發現這個用戶在localhost權限非常高,連grant_priv都有,(察看的時候,會發現在root用戶下有兩行用戶名、密碼為空的,但各項權限有y\n的,就是這個匿名用戶本地、遠程權限設置了)

所以我試著用這個php頁面創建一個新用戶,並grant給他較高的權限,結果一舉成功,這樣我就可以用這個新用戶通過我本機的MySQL client連接到這個網站的MySQL server,並用這個新建立的用戶的管理權限對這個網站的MySQL server進行管理,看到自己可以進行這樣輕易獲得深入的數據庫操作,我怎麼還敢把朋友的主頁空間的敏感資料放入這個MySQL server呢?

改進建議:

1、在安裝完成MySQL 後,不僅改變root用戶的的密碼,也同時改變匿名用戶的密碼,方法類似改變root的密碼的方式:

MySQL> UPDATE user set password=PASSWORD('yournewpassword') where user='';

MySQL>FLUSH PRIVILEGES;

2、如非必要,刪除這個匿名用戶,這樣所有人要使用MySQL 都必須提供用戶名,即便日後出了問題,也容易查找問題的源頭。

3、除了root用戶外,其他用戶包括匿名用戶(如果沒有刪除這個用戶)不應該擁有grant權限,防止管理權限不受控制的擴散出去。

4、賦予用戶update\delete\alert\create\drop權限的時候,應該限定到特定的數據庫,尤其要避免普通客戶擁有對MySQL數據庫做操作的權限,否則你的系統設置很可能被替換掉。

5、檢查MySQL.user表,取消不必要用戶的shutdown_priv,reload_priv,process_priv和File_priv權限,這些權限可能洩漏更多的服務器信息包括非MySQL的其它信息出去。

6、如果不打算讓你的用戶使用MySQL數據庫,在提供諸如php這樣的腳本語言的時候,重新設置或編譯你的php,取消它們對MySQL的默認支持。

以上就是精品為大家整理的MySQL安全問題的一點心得體會,我們一起去看看吧!,希望對大家有所幫助。

copyright © 萬盛學電腦網 all rights reserved