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