淺談MySQL的安全機(jī)制
發(fā)布時(shí)間:2025-04-07 閱讀:
MySQL作為一種快速、多用戶、多線程的SQL數(shù)據(jù)庫(kù)服務(wù)器,可以通過Intemet方便地獲取和升級(jí),屬免費(fèi)軟件,這使它成為B/S系統(tǒng)開發(fā)的首選數(shù)據(jù)庫(kù)。作為一個(gè)網(wǎng)絡(luò)數(shù)據(jù)庫(kù),其安全性尤其重要。作為MySQL管理員有責(zé)任保證數(shù)據(jù)庫(kù)系統(tǒng)、內(nèi)容的安全性,使得這些數(shù)據(jù)記錄只能被正確授權(quán)的用戶訪問,這涉及到數(shù)據(jù)庫(kù)系統(tǒng)的內(nèi)部安全性和外部安全性,內(nèi)部安全性關(guān)心的是文件系統(tǒng)的問題,外部安全性關(guān)心的是外部通過網(wǎng)絡(luò)連接服務(wù)器的客戶問題。MySQL有一套先進(jìn)但非標(biāo)準(zhǔn)的安全,權(quán)限機(jī)制。
1.網(wǎng)絡(luò)安全性
1.1物理劃分
為提高數(shù)據(jù)庫(kù)安全,可以通過物理介質(zhì)和對(duì)應(yīng)的軟件將Intemet訪問MySQL劃分為若干區(qū)域,包括內(nèi)網(wǎng)機(jī)制、中介機(jī)制和外網(wǎng)機(jī)制。訪問的整體路徑如圖1所示。
在建立數(shù)據(jù)庫(kù)時(shí),將數(shù)據(jù)庫(kù)建立在一個(gè)小型內(nèi)網(wǎng)范圍內(nèi),為避免空間浪費(fèi),可以同時(shí)放置多個(gè)數(shù)據(jù)庫(kù)。
在內(nèi)網(wǎng)與外網(wǎng)之間建立中介機(jī)制,作為內(nèi)網(wǎng)和外網(wǎng)的連接區(qū)和隔離帶。無論從外網(wǎng)訪問數(shù)據(jù)庫(kù)或從內(nèi)網(wǎng)訪問數(shù)據(jù)庫(kù),均須先訪問這個(gè)中介機(jī)制,待中介機(jī)制進(jìn)行信息處理后才能實(shí)施訪問。中介機(jī)制為一個(gè)獨(dú)立的設(shè)置,既與內(nèi)網(wǎng)和外網(wǎng)相互聯(lián)系,又有相對(duì)的獨(dú)立性。
1.2 內(nèi)網(wǎng)機(jī)制
在內(nèi)網(wǎng)中放置數(shù)據(jù)庫(kù),需要增加相關(guān)安全插件才能保障數(shù)據(jù)庫(kù)在內(nèi)網(wǎng)中的安全,以正確地對(duì)數(shù)據(jù)庫(kù)執(zhí)行查詢、顯示、修改、編輯、刪除等操作。
1.2.1數(shù)據(jù)庫(kù)用戶
在連接數(shù)據(jù)庫(kù)過程中,增加限制用戶機(jī)制,給內(nèi)網(wǎng)配置一個(gè)普通用戶ID,給予訪問數(shù)據(jù)庫(kù)的權(quán)限,每次中介機(jī)制轉(zhuǎn)接進(jìn)來的請(qǐng)求都通過這個(gè)ID登陸數(shù)據(jù)庫(kù)進(jìn)行相關(guān)操作。 增加密碼管理工具,加入數(shù)據(jù)庫(kù)密碼修改(在mysql/bin):mysqladmin -u用戶名-p舊密碼password新密碼),在相應(yīng)間隔時(shí)間內(nèi)執(zhí)行,如圖2所示。
1.2.2服務(wù)器設(shè)置
為保證數(shù)據(jù)的安全性,可以通過啟動(dòng)服務(wù)器和停止服務(wù)器來阻止外部數(shù)據(jù)入侵,防止數(shù)據(jù)泄露。在內(nèi)網(wǎng)得到請(qǐng)求時(shí),需要向數(shù)據(jù)庫(kù)中查詢數(shù)據(jù)信息時(shí)執(zhí)行插件啟動(dòng)數(shù)據(jù)庫(kù)服務(wù)器( mysql server start),在內(nèi)網(wǎng)停止對(duì)數(shù)據(jù)庫(kù)的訪問時(shí),自動(dòng)執(zhí)行插件停止服務(wù)器(mysql server stop)。
1.2.3自動(dòng)備份
通過啟動(dòng)數(shù)據(jù)庫(kù)服務(wù)器之后的時(shí)間間隔,建立自動(dòng)備份系統(tǒng),以及時(shí)備份錄入和更改的數(shù)據(jù)。
1.3中介機(jī)制
通過在內(nèi)網(wǎng)中設(shè)置中介機(jī)制,避免外網(wǎng)用戶直接得到數(shù)據(jù)庫(kù)使用權(quán)限,隔絕外網(wǎng)用戶使用觸發(fā)器來制造數(shù)據(jù)庫(kù)后門,而留下數(shù)據(jù)安全隱患。在中介機(jī)制中設(shè)置自動(dòng)判斷數(shù)據(jù)機(jī)制和內(nèi)外網(wǎng)的連接機(jī)制,如圖3所示。
1.4外網(wǎng)機(jī)制
MySQL被廣泛地應(yīng)用在Internet上的中小型網(wǎng)站中,因此出現(xiàn)了通過遠(yuǎn)程網(wǎng)絡(luò)訪問數(shù)據(jù)庫(kù)中的共享資源,但是基于對(duì)數(shù)據(jù)庫(kù)中信息的安全保護(hù),外網(wǎng)則被中介機(jī)制和內(nèi)網(wǎng)機(jī)制與數(shù)據(jù)庫(kù)隔離,不能夠直接連接數(shù)據(jù)庫(kù),以確保數(shù)據(jù)庫(kù)的安全,是以外網(wǎng)機(jī)制最為簡(jiǎn)單,只負(fù)責(zé)接收和發(fā)送。
在網(wǎng)絡(luò)訪問MySQL過程中三個(gè)階段雖然會(huì)延長(zhǎng)訪問數(shù)據(jù)庫(kù)的時(shí)間,但是在現(xiàn)今數(shù)據(jù)的高效性下,依舊能夠彌補(bǔ)這一缺點(diǎn),同時(shí)能夠達(dá)到極大程度的提高網(wǎng)絡(luò)中訪問數(shù)據(jù)庫(kù)時(shí)對(duì)數(shù)據(jù)的安全保護(hù)。
2.內(nèi)部安全性
在MySQL中,一個(gè)數(shù)據(jù)庫(kù)(包括存放用戶權(quán)限信息的mysql庫(kù))對(duì)應(yīng)著文件系統(tǒng)的一個(gè)目錄,數(shù)據(jù)庫(kù)中的表則對(duì)應(yīng)著此目錄中3個(gè)后綴分別為frm、MYD、MYI的與表同名的文件,而這些文件可直接轉(zhuǎn)移到其它MySQL服務(wù)器的數(shù)據(jù)目錄下,所以對(duì)于數(shù)據(jù)文件系統(tǒng)的保護(hù)也就是數(shù)據(jù)安全的重要一環(huán)。
3.外部安全性
3.1 密碼的保護(hù)
當(dāng)客戶想要登陸一個(gè)MySQL服務(wù)器時(shí),MySQL客戶程序一般要求客戶指定連接參數(shù):想要聯(lián)接的主機(jī)、用戶名和口令。如果連接參數(shù)以多種方法被指定,在命令行上被指定的值優(yōu)先于在配置文件和環(huán)境變量中指定的值,而在配置文件指定的值優(yōu)先于在環(huán)境變量中指定的值。無論哪種方式的連接,其參數(shù)指定,重點(diǎn)在于密碼的保護(hù)。
1)避免在命令行中輸入明文顯示的口令。
2)避免配置文件是全體或組可讀的。當(dāng)采用非交互式方式登陸服務(wù)器時(shí),需要事先在配置文件中存儲(chǔ)口令,已備系統(tǒng)登陸時(shí)調(diào)用。
3)避免在環(huán)境變量MYSQL PWD中存儲(chǔ)口令。
4)避免口令明文在命令行中出現(xiàn)、在連接上傳輸。
總之,最安全的方法是讓客戶程序提示口令或在一個(gè)受保護(hù)的文件中指定口令。
3.2權(quán)限系統(tǒng)的設(shè)置保護(hù)
MySQL的安全/權(quán)限控制信息主要存放在mysql庫(kù)User、Db、Host表中,這3個(gè)表中字段分為范圍字段和權(quán)限字段。
MySQL存取權(quán)限控制包含2個(gè)階段。
1)服務(wù)器驗(yàn)證客戶的身份,確定是否允許連接?蛻舻纳矸菔歉鶕(jù)客戶連接的主機(jī)、指定的用戶名和密碼來惟一確定的。當(dāng)客戶試圖連接一個(gè)MySQL服務(wù)器時(shí),服務(wù)器會(huì)用mysql庫(kù)中User表的3個(gè)字段(Host、User、Password)檢查客戶的身份,如果與User表中的某一條記錄完全匹配,MySQL接受這次連接;如果匹配多條記錄,將以MySQL對(duì)User表讀入時(shí)排序的順序?yàn)g覽條目,第一個(gè)匹配的條目被使用;否則終止這個(gè)連接請(qǐng)求。
2)假定能連接,服務(wù)器檢查客戶發(fā)出的每個(gè)請(qǐng)求,看是否有足夠的權(quán)限實(shí)施它。階段2中請(qǐng)求確認(rèn)是由被存儲(chǔ)在mysql數(shù)據(jù)庫(kù)中user、db、host、ta2bles priv和columns priv授權(quán)表中的權(quán)限內(nèi)容來驗(yàn)證的。MySQL的安全,權(quán)限系統(tǒng)是很靈活的,它允許以多種不同的方式設(shè)置用戶權(quán)限:既可以使用標(biāo)準(zhǔn)的SQL語句CRANT和REVOKE來修改授權(quán)表,也可以用Update、In-sert等語句直接修改授權(quán)表。在MySQL啟動(dòng)時(shí)和在權(quán)限修改生效時(shí),服務(wù)器讀一文些數(shù)據(jù)表內(nèi)容。
4.MySQL、系統(tǒng)的作用
MySQL權(quán)限系統(tǒng)的主要功能是驗(yàn)證連接到一臺(tái)MySQL服務(wù)器主機(jī)的一個(gè)用戶是否合法,并且賦予該用戶在一個(gè)數(shù)據(jù)庫(kù)表上讀取、插入、更新、刪除記錄的權(quán)限。另外,還有是否允許匿名訪問數(shù)據(jù)庫(kù),以及是否允許從外部文件批量向數(shù)據(jù)表中追加記錄等操作的能力。
MySQL提供以下權(quán)限:
1) select、insert、update和delete權(quán)限允許用戶在一個(gè)數(shù)據(jù)庫(kù)現(xiàn)有的表上實(shí)施讀取、插入、更新、刪除記錄的操作。
2) index權(quán)限允許用戶在數(shù)據(jù)表上建立或刪除索引。
3) alter權(quán)限允許用戶使用ALTER TABLE命令來修改現(xiàn)有數(shù)據(jù)表的結(jié)構(gòu)。
4) create和drop權(quán)限允許創(chuàng)建新的數(shù)據(jù)庫(kù)和表,或刪除現(xiàn)存的數(shù)據(jù)庫(kù)和表。
注意:如果將mysql數(shù)據(jù)庫(kù)的drop權(quán)限授予一個(gè)用戶,該用戶能刪除存儲(chǔ)了MySQL系統(tǒng)權(quán)限的數(shù)據(jù)庫(kù)!
5) grant權(quán)限允許用戶把自己擁有的權(quán)限授予其它的用戶。
6) file權(quán)限允許被授予該權(quán)限的用戶都能讀或?qū)慚ySQL服務(wù)器能讀或?qū)懙娜魏挝募?br />
7) reload權(quán)限允許用戶使用reload命令通知MySQL服務(wù)器再次讀入授權(quán)表;使用refresh命令刷新所有表、打開和關(guān)閉日志記錄文件。
8) shutdown權(quán)限允許用戶使用shutdown命令關(guān)掉服務(wù)器。
9) process權(quán)限允許用戶使用。
processlist命令顯示在服務(wù)器內(nèi)執(zhí)行的進(jìn)程的信息;使用kill命令殺死服務(wù)器進(jìn)程。用戶總是能顯示或殺死自己的進(jìn)程,但是,顯示或殺死其它用戶啟動(dòng)的進(jìn)程需要process權(quán)限。
5.MySQL權(quán)限更改后的生效
mysqld啟動(dòng)時(shí)將所有的授權(quán)表內(nèi)容讀入內(nèi)存,所以任何權(quán)限都會(huì)在這時(shí)生效。
服務(wù)器啟動(dòng)后,修改的權(quán)限何時(shí)生效:
1)用GRANT、REVOKE或SET PASSWORD語句對(duì)授權(quán)表實(shí)行的修改會(huì)立即生效。
2)如果使用INSERT、UPDATE等語句手工修改授權(quán)表,權(quán)限不會(huì)立刻生效,而是在下一次啟動(dòng)服務(wù)器時(shí)生效。如果想使修改的權(quán)限立即生效,應(yīng)該執(zhí)行FLUSH PRIVILECES語句或運(yùn)行mysqladmin flush - privileges或mysqladmin reload告訴服務(wù)器重新裝載授權(quán)表。
3)當(dāng)服務(wù)器注意到授權(quán)表更改時(shí),對(duì)已經(jīng)存在的用戶連接有以下影響:
表和列權(quán)限的修改,在用戶的下一次請(qǐng)求時(shí)生效;
數(shù)據(jù)庫(kù)權(quán)限的修改,在下一個(gè)執(zhí)行USE db -name命令時(shí)生效。
4)全局權(quán)限的修改和口令的修改,在下一次用戶連接時(shí)生效。
6.小結(jié)
MySQL作為被廣泛采用的網(wǎng)絡(luò)數(shù)據(jù)庫(kù),它具有先進(jìn)但非標(biāo)準(zhǔn)的安全/權(quán)限機(jī)制,這就要求系統(tǒng)管理員在他的安全性規(guī)劃方面不能完全遵循常規(guī),但如果做好文件系統(tǒng)保護(hù)、口令保護(hù)和權(quán)限表的設(shè)置,一樣可以使數(shù)據(jù)系統(tǒng)、數(shù)據(jù)處于安全的境地。另外,作為MySQL管理員,要訂閱MySQL郵件列表,能及時(shí)地知道bug和補(bǔ)丁的下載升級(jí)。
作者:大學(xué)生網(wǎng)報(bào) 來源:大學(xué)生網(wǎng)報(bào)
大學(xué)學(xué)習(xí)推薦
- 淺談MySQL的安全機(jī)制
- MySQL作為一種快速、多用戶、多線程的SQL數(shù)據(jù)庫(kù)服務(wù)器,可以通過Intemet方便地獲取和升級(jí),屬免費(fèi)軟件,這使它成為B/S系統(tǒng)開發(fā)的首選數(shù)
- 04-07
- 淺析計(jì)算機(jī)病毒及預(yù)防
- 在計(jì)算機(jī)病毒剛出現(xiàn)時(shí),人們對(duì)計(jì)算機(jī)病毒的認(rèn)識(shí)不夠,防范意識(shí)不強(qiáng),還沒來得及深刻認(rèn)識(shí)他的作用,他就已經(jīng)大量傳播,肆意橫行。
- 04-07
- 班主任工作中的常規(guī)管理
- 有常規(guī)、能踐行常規(guī)是正規(guī)的體現(xiàn)。抓好常規(guī)管理是教育教學(xué)工作的重要方面,因?yàn)槌R?guī)正是多年辦學(xué)經(jīng)驗(yàn)的匯聚,更是經(jīng)驗(yàn)的精華。  
- 04-06
- 善行執(zhí)教的思考
- “人之初,性本善”。作為人民教師,與人為善,善行執(zhí)教,是教師教育工作本身、自己本性的體現(xiàn)。
- 04-06