MySQL安全問(wèn)題(匿名用戶)的一點(diǎn)心得(轉(zhuǎn))[@more@] 前兩天在幫朋友整理他的主頁(yè)空間時(shí)候,發(fā)現(xiàn)的一點(diǎn)關(guān)于MySQL可能大家都會(huì)忽略的問(wèn)題:我們知道,在安裝完MySQL后,它會(huì)自動(dòng)創(chuàng)建一個(gè)root用戶和一個(gè)匿名用戶,其初始密碼都是空,對(duì)于前者,很多參考資料上都會(huì)提醒大家要注意及時(shí)設(shè)定一個(gè)密碼,而忽略了后者,大概是因?yàn)楹笳吣J(rèn)設(shè)定為只能在本機(jī)使用的緣故吧。
但如果你的MySQL是要提供給Web
服務(wù)器作數(shù)據(jù)庫(kù)服務(wù)的,忽略這個(gè)匿名用戶的代價(jià)可能相當(dāng)慘重,因?yàn)樵谀J(rèn)設(shè)置下,這個(gè)匿名用戶在localhost上幾乎擁有和root一樣的權(quán)限,這時(shí)候,如果你的客戶擁有上傳腳本文件、腳本文件可以進(jìn)行MySQL數(shù)據(jù)庫(kù)操作(比如允許操作MySQL的php)的權(quán)限已經(jīng)可能將你的MySQL改動(dòng)得面目全非了:
我今天幫朋友整理他的主頁(yè)空間的時(shí)候,試著寫(xiě)了一個(gè)很簡(jiǎn)單的執(zhí)行sql語(yǔ)句的php文件上傳上去,其中連接字中的user,password我都試著置空,host=localhost,結(jié)果發(fā)現(xiàn)我的sql語(yǔ)句可以執(zhí)行,于是執(zhí)行select * from MySQL.user察看用戶權(quán)限,發(fā)現(xiàn)這個(gè)用戶在localhost權(quán)限非常高,連grant_priv都有,(察看的時(shí)候,會(huì)發(fā)現(xiàn)在root用戶下有兩行用戶名、密碼為空的,但各項(xiàng)權(quán)限有y
的,就是這個(gè)匿名用戶本地、遠(yuǎn)程權(quán)限設(shè)置了)
所以我試著用這個(gè)php頁(yè)面創(chuàng)建一個(gè)新用戶,并grant給他較高的權(quán)限,結(jié)果一舉成功,這樣我就可以用這個(gè)新用戶通過(guò)我本機(jī)的MySQL client連接到這個(gè)網(wǎng)站的MySQL server,并用這個(gè)新建立的用戶的管理權(quán)限對(duì)這個(gè)網(wǎng)站的MySQL server進(jìn)行管理,看到自己可以進(jìn)行這樣輕易獲得深入的數(shù)據(jù)庫(kù)操作,我怎么還敢把朋友的主頁(yè)空間的敏感資料放入這個(gè)MySQL server呢?
改進(jìn)建議:
1、在安裝完成MySQL 后,不僅改變r(jià)oot用戶的的密碼,也同時(shí)改變匿名用戶的密碼,方法類似改變r(jià)oot的密碼的方式: