MYSQL數(shù)據(jù)庫(kù)系統(tǒng)安全管理_第1頁(yè)
MYSQL數(shù)據(jù)庫(kù)系統(tǒng)安全管理_第2頁(yè)
MYSQL數(shù)據(jù)庫(kù)系統(tǒng)安全管理_第3頁(yè)
MYSQL數(shù)據(jù)庫(kù)系統(tǒng)安全管理_第4頁(yè)
MYSQL數(shù)據(jù)庫(kù)系統(tǒng)安全管理_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、MYSQL 數(shù)據(jù)庫(kù)系統(tǒng)安全管理目錄正文 .11 研究的背景 .12 研究的目的和意義.13 研究的內(nèi)容 .23.1 MySQL 數(shù)據(jù)庫(kù)的安全配置 .23.1.1 系統(tǒng)內(nèi)部安全 .23.1.2 外部網(wǎng)絡(luò)安全 .43.2 MySQL 用戶(hù)帳號(hào)管理 .83.3 MD5 加密 .113.3.1 數(shù)據(jù)庫(kù)中數(shù)據(jù)加密的原因 .113.3.2 加密方式 .123.3.3 Md5 加密原理.123.3.4 具體算法 .134 總結(jié) .14參考文獻(xiàn): .15附錄: .15MySQL 數(shù)據(jù)庫(kù)安全管理摘要摘要: MySQL 是完全網(wǎng)絡(luò)化的跨平臺(tái)關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng),同時(shí)是具有客戶(hù)機(jī)/服務(wù)器體系結(jié)構(gòu)的分布式數(shù)據(jù)庫(kù)管理系統(tǒng)。

2、它具有功能強(qiáng)、使用簡(jiǎn)便、管理方便、運(yùn)行速度快、安全可靠性強(qiáng)等優(yōu)點(diǎn),用戶(hù)可利用許多語(yǔ)言編寫(xiě)訪(fǎng)問(wèn) MySQL 數(shù)據(jù)庫(kù)的程序,特別是與 PHP 更是黃金組合,運(yùn)用十分廣泛。由于 MySQL 是多平臺(tái)的數(shù)據(jù)庫(kù),它的默認(rèn)配置要考慮各種情況下都能適用,所以在用戶(hù)自己的使用環(huán)境下應(yīng)該進(jìn)行安全加固。用戶(hù)有責(zé)任維護(hù) MySQL 數(shù)據(jù)庫(kù)系統(tǒng)的數(shù)據(jù)安全性和完整性。關(guān)鍵詞關(guān)鍵詞:MYSQLMYSQL;數(shù)據(jù)庫(kù);數(shù)據(jù)庫(kù)安全;訪(fǎng)問(wèn)控制;數(shù)據(jù)庫(kù);數(shù)據(jù)庫(kù)安全;訪(fǎng)問(wèn)控制;MD5MD5 加密加密正文正文MySQL 數(shù)據(jù)庫(kù)的安全配置必須從兩個(gè)方面入手,系統(tǒng)內(nèi)部安全和外部網(wǎng)絡(luò)安全;MySQL 用戶(hù)帳號(hào)管理主要用 grant(授權(quán))和

3、revoke(撤權(quán))兩個(gè) SQL 指令來(lái)管理;MD5在實(shí)際中的一個(gè)應(yīng)用就是對(duì)數(shù)據(jù)庫(kù)中的用戶(hù)信息加密,當(dāng)用戶(hù)創(chuàng)建一個(gè)新的賬號(hào)或者密碼,他的信息不是直接保存到數(shù)據(jù)庫(kù),而是經(jīng)過(guò)一次加密以后再保存,這樣,即使這些信息被泄露,也不能立即理解這些信息的真正含義。有效的提高了前臺(tái)和后臺(tái)的數(shù)據(jù)安全性?!揪肺臋n】如有侵權(quán),請(qǐng)聯(lián)系網(wǎng)站刪除,僅供學(xué)習(xí)與交流.精品文檔.1 研究的背景隨著計(jì)算機(jī)技術(shù)和信息技術(shù)的迅速發(fā)展。數(shù)據(jù)庫(kù)的應(yīng)用十分廣泛,深入到各個(gè)領(lǐng)域,但隨之而來(lái)產(chǎn)生了數(shù)據(jù)的安全問(wèn)題。近年來(lái),數(shù)據(jù)庫(kù)供應(yīng)商競(jìng)相為大眾提供功能豐富的數(shù)據(jù)庫(kù)環(huán)境,大多數(shù)主要系統(tǒng)都支持 XML、Web 服務(wù)、分布式復(fù)制、操作系統(tǒng)集成以及其

4、他一些有用的功能。與以前相比,數(shù)據(jù)庫(kù)更加容易遭受到攻擊,它已經(jīng)成為了更有價(jià)值的攻擊目標(biāo),所以需要配置更多的安全功能,管理也要更加的謹(jǐn)慎。2 研究的目的和意義本文對(duì) MySQL 數(shù)據(jù)庫(kù)的安全配置、MySQL 用戶(hù)帳號(hào)管理以及使用 MD5 加密提高數(shù)據(jù)庫(kù)前臺(tái)和后臺(tái)數(shù)據(jù)安全性做了詳細(xì)研究。由于 MySQL 是多平臺(tái)的數(shù)據(jù)庫(kù),它的默認(rèn)配置要考慮各種情況下都能適用,所以用戶(hù)需要根據(jù)具體的環(huán)境進(jìn)行相關(guān)的安全配置,通過(guò)本文的研究,對(duì)如何提高數(shù)據(jù)庫(kù)的安全性有很大的幫助。 3 研究的內(nèi)容3.1 MySQL 數(shù)據(jù)庫(kù)的安全配置3.1.1 系統(tǒng)內(nèi)部安全MySQL 安裝好,運(yùn)行了 mysql_db_install 腳本

5、以后就會(huì)建立數(shù)據(jù)目錄和初始化數(shù)據(jù)庫(kù)。如果我們用 MySQL 源碼包安裝,而且安裝目錄是/usr/local/mysql,那么數(shù)據(jù)目錄一般會(huì)是/usr/local/mysql/var。數(shù)據(jù)庫(kù)系統(tǒng)由一系列數(shù)據(jù)庫(kù)組成,每個(gè)數(shù)據(jù)庫(kù)包含一系列數(shù)據(jù)庫(kù)表。MySQL 是用數(shù)據(jù)庫(kù)名在數(shù)據(jù)目錄建立建立一個(gè)數(shù)據(jù)庫(kù)目錄,各數(shù)據(jù)庫(kù)表分別以數(shù)據(jù)庫(kù)表名作為文件名,擴(kuò)展名分別為 MYD、MYI、frm 的三個(gè)文件放到數(shù)據(jù)庫(kù)目錄中。MySQL 的授權(quán)表給數(shù)據(jù)庫(kù)的訪(fǎng)問(wèn)提供了靈活的權(quán)限控制,但是如果本地用戶(hù)擁有對(duì)庫(kù)文件的讀權(quán)限的話(huà),攻擊者只需把數(shù)據(jù)庫(kù)目錄打包拷走,然后拷到自己本機(jī)的數(shù)據(jù)目錄下就能訪(fǎng)問(wèn)竊取的數(shù)據(jù)庫(kù)。所以 MySQL

6、 所在的主機(jī)的安全性是最首要的問(wèn)題,如果主機(jī)不安全,被攻擊者控制,那么 MySQL 的安全性也無(wú)從談起。其次就是數(shù)據(jù)目錄和數(shù)據(jù)文件的安全性,也就是權(quán)限設(shè)置問(wèn)題。從 MySQL 主站一些老的 binary 發(fā)行版來(lái)看,3.21.xx 版本中數(shù)據(jù)目錄的屬性是775,這樣非常危險(xiǎn),任何本地用戶(hù)都可以讀數(shù)據(jù)目錄,所以數(shù)據(jù)庫(kù)文件很不安全?!揪肺臋n】如有侵權(quán),請(qǐng)聯(lián)系網(wǎng)站刪除,僅供學(xué)習(xí)與交流.精品文檔.3.22.xx 版本中數(shù)據(jù)目錄的屬性是 770,這種屬性也有些危險(xiǎn),本地的同組用戶(hù)既能讀也能寫(xiě),所以數(shù)據(jù)文件也不安全。3.23.xx 版本數(shù)據(jù)目錄的屬性是 700,這樣就比較好,只有啟動(dòng)數(shù)據(jù)庫(kù)的用戶(hù)可以讀寫(xiě)

7、數(shù)據(jù)庫(kù)文件,保證了本地?cái)?shù)據(jù)文件的安全。如果啟動(dòng) MySQL 數(shù)據(jù)庫(kù)的用戶(hù)是 mysql,那么像如下的目錄和文件的是安全的,請(qǐng)注意數(shù)據(jù)目錄及下面的屬性:shellls -l /usr/local/mysqltotal 40drwxrwxr-x 2 root root 4096 Feb 27 20:07 bindrwxrwxr-x 3 root root 4096 Feb 27 20:07 includedrwxrwxr-x 2 root root 4096 Feb 27 20:07 infodrwxrwxr-x 3 root root 4096 Feb 27 20:07 libdrwxrwxr-

8、x 2 root root 4096 Feb 27 20:07 libexecdrwxrwxr-x 3 root root 4096 Feb 27 20:07 manshellls -l /usr/local/mysql/vartotal 8drwx- 2 mysql mysql 4096 Feb 27 20:08 mysqldrwx- 2 mysql mysql 4096 Feb 27 20:08 testshellls -l /usr/local/mysql/var/mysqltotal 104-rw- 1 mysql mysql 0 Feb 27 20:08 columns_priv.M

9、YD-rw- 1 mysql mysql 1024 Feb 27 20:08 columns_priv.MYI-rw- 1 mysql mysql 8778 Feb 27 20:08 columns_priv.frm-rw- 1 mysql mysql 302 Feb 27 20:08 db.MYD-rw- 1 mysql mysql 3072 Feb 27 20:08 db.MYI-rw- 1 mysql mysql 8982 Feb 27 20:08 db.frm-rw- 1 mysql mysql 0 Feb 27 20:08 func.MYD-rw- 1 mysql mysql 102

10、4 Feb 27 20:08 func.MYI-rw- 1 mysql mysql 8641 Feb 27 20:08 func.frm-rw- 1 mysql mysql 0 Feb 27 20:08 host.MYD【精品文檔】如有侵權(quán),請(qǐng)聯(lián)系網(wǎng)站刪除,僅供學(xué)習(xí)與交流.精品文檔.-rw- 1 mysql mysql 1024 Feb 27 20:08 host.MYI-rw- 1 mysql mysql 8958 Feb 27 20:08 host.frm-rw- 1 mysql mysql 0 Feb 27 20:08 tables_priv.MYD-rw- 1 mysql mysql

11、1024 Feb 27 20:08 tables_priv.MYI如果這些文件的屬主及屬性不是這樣,請(qǐng)用以下兩個(gè)命令修正之:shellchown -R mysql.mysql /usr/local/mysql/varshellchmod -R go-rwx /usr/local/mysql/var用 root 用戶(hù)啟動(dòng)遠(yuǎn)程服務(wù)一直是安全大忌,因?yàn)槿绻?wù)程序出現(xiàn)問(wèn)題,遠(yuǎn)程攻擊者極有可能獲得主機(jī)的完全控制權(quán)。MySQL 從 3.23.15 版本開(kāi)始時(shí)作了小小的改動(dòng),默認(rèn)安裝后服務(wù)要用 mysql 用戶(hù)來(lái)啟動(dòng),不允許 root 用戶(hù)啟動(dòng)。如果非要用root 用戶(hù)來(lái)啟動(dòng),必須加上-user=root

12、 的參數(shù)(./safe_mysqld -user=root &)。因?yàn)?MySQL 中有 LOAD DATA INFILE 和 SELECT . INTO OUTFILE 的 SQL 語(yǔ)句,如果是 root 用戶(hù)啟動(dòng)了 MySQL 服務(wù)器,那么,數(shù)據(jù)庫(kù)用戶(hù)就擁有了 root 用戶(hù)的寫(xiě)權(quán)限。不過(guò) MySQL 還是做了一些限制的,比如 LOAD DATA INFILE 只能讀全局可讀的文件,SELECT . INTO OUTFILE 不能覆蓋已經(jīng)存在的文件。本地的日志文件也不能忽視,包括 shell 的日志和 MySQL 自己的日志。有些用戶(hù)在本地登陸或備份數(shù)據(jù)庫(kù)的時(shí)候?yàn)榱藞D方便,有時(shí)會(huì)在

13、命令行參數(shù)里直接帶了數(shù)據(jù)庫(kù)的密碼,如:shell/usr/local/mysql/bin/mysqldump -uroot -ptest testtest.sqlshell/usr/local/mysql/bin/mysql -uroot ptest這些命令會(huì)被 shell 記錄在歷史文件里,比如 bash 會(huì)寫(xiě)入用戶(hù)目錄的.bash_history 文件,如果這些文件不慎被讀,那么數(shù)據(jù)庫(kù)的密碼就會(huì)泄漏。用戶(hù)登陸數(shù)據(jù)庫(kù)后執(zhí)行的 SQL 命令也會(huì)被 MySQL 記錄在用戶(hù)目錄的.mysql_history 文件里。如果數(shù)據(jù)庫(kù)用戶(hù)用 SQL 語(yǔ)句修改了數(shù)據(jù)庫(kù)密碼,也會(huì)因.mysql_history

14、 文件而泄漏。所以我們?cè)?shell 登陸及備份的時(shí)候不要在-p 后直接加密碼,而是在提示后再輸入數(shù)據(jù)庫(kù)密碼。另外這兩個(gè)文件我們也應(yīng)該不讓它記錄我們的操作,以防萬(wàn)一。shellrm .bash_history .mysql_historyshellln -s /dev/null .bash_history【精品文檔】如有侵權(quán),請(qǐng)聯(lián)系網(wǎng)站刪除,僅供學(xué)習(xí)與交流.精品文檔.shellln -s /dev/null .mysql_history上門(mén)這兩條命令把這兩個(gè)文件鏈接到/dev/null,那么我們的操作就不會(huì)被記錄到這兩個(gè)文件里了。3.1.2 外部網(wǎng)絡(luò)安全MySQL 數(shù)據(jù)庫(kù)安裝好以后,Unix

15、平臺(tái)的 user 表是這樣的:mysql use mysql;Database changedmysql select Host,User,Password,Select_priv,Grant_priv from user;圖 3.1.2.1 Unix 平臺(tái)的 user 表Windows 平臺(tái)的 user 表是這樣的:mysql use mysql;Database changedmysql select Host,User,Password,Select_priv,Grant_priv from user;圖 3.1.2.2 Windows 平臺(tái)的 user 表實(shí)際上 Unix 平臺(tái)的 My

16、SQL 默認(rèn)只允許本機(jī)才能連接數(shù)據(jù)庫(kù)。但是缺省 root 用戶(hù)口令是空,所以當(dāng)務(wù)之急是給 root 用戶(hù)加上口令。給數(shù)據(jù)庫(kù)用戶(hù)加口令有三種方法:在 shell 提示符下用 mysqladmin 命令來(lái)改 root 用戶(hù)口令:shellmysqladmin -uroot password test這樣,MySQL 數(shù)據(jù)庫(kù) root 用戶(hù)的口令就被改成 test 了。用 set password 修改口令:mysql set password for rootlocalhost=password(test);這時(shí) root 用戶(hù)的口令就被改成 test 了。直接修改 user 表的 root 用戶(hù)

17、口令:【精品文檔】如有侵權(quán),請(qǐng)聯(lián)系網(wǎng)站刪除,僅供學(xué)習(xí)與交流.精品文檔.mysql use mysql;mysql update user set password=password(test) where user=root;mysql flush privileges;這樣,MySQL 數(shù)據(jù)庫(kù) root 用戶(hù)的口令也被改成 test 了。其中最后一句命令flush privileges 的意思是強(qiáng)制刷新內(nèi)存授權(quán)表,否則用的還是緩沖中的口令,這時(shí)非法用戶(hù)還可以用 root 用戶(hù)及空口令登陸,直到重啟 MySQL 服務(wù)器。我們還看到 user 為空的匿名用戶(hù),雖然它在 Unix 平臺(tái)下沒(méi)什么權(quán)限

18、,但為了安全起見(jiàn)我們應(yīng)該刪除它:mysql delete from user where user=;Windows 版本 MySQL 的 user 表有很大不同,我們看到 Host 字段除了 localhost還有是%。這里%的意思是允許任意的主機(jī)連接 MySQL 服務(wù)器,這是非常不安全的,給攻擊者造成可乘之機(jī),我們必須刪除 Host 字段為%的記錄:mysqldelete from user where host=%;默認(rèn) root 用戶(hù)的空密碼也是必須修改,三種修改方法和 Unix 平臺(tái)一樣。對(duì) user表操作以后不要忘了用 flush privileges 來(lái)強(qiáng)制刷新內(nèi)存授權(quán)表,這樣才

19、能生效。MySQL 的 5 個(gè)授權(quán)表:user, db, host, tables_priv 和 columns_priv 提供非常靈活的安全機(jī)制,從 MySQL 3.22.11 開(kāi)始引入了兩條語(yǔ)句 GRANT 和 REVOKE 來(lái)創(chuàng)建和刪除用戶(hù)權(quán)限,可以方便的限制哪個(gè)用戶(hù)可以連接服務(wù)器,從哪里連接以及連接后可以做什么操作。在 3.22.11 版本以前的 MySQL 授權(quán)機(jī)制不完善,和新版本也有較大的不同,建議升級(jí)到最新版本的 MySQL。我們先來(lái)了解授權(quán)表的結(jié)構(gòu)。MySQL 授權(quán)表的結(jié)構(gòu)與內(nèi)容:mysql desc user;user 表是 5 個(gè)授權(quán)表中最重要的一個(gè),列出可以連接服務(wù)器的用

20、戶(hù)及其加密口令,并且它指定他們有哪種全局(超級(jí)用戶(hù))權(quán)限。在 user 表啟用的任何權(quán)限均是全局權(quán)限,并適用于所有數(shù)據(jù)庫(kù)。所以我們不能給任何用戶(hù)訪(fǎng)問(wèn) mysql.user 表的權(quán)限!權(quán)限說(shuō)明:【精品文檔】如有侵權(quán),請(qǐng)聯(lián)系網(wǎng)站刪除,僅供學(xué)習(xí)與交流.精品文檔.圖 3.1.2.3 權(quán)限說(shuō)明mysql desc db;圖 3.1.2.4 數(shù)據(jù)庫(kù)db 表列出數(shù)據(jù)庫(kù),而用戶(hù)有權(quán)限訪(fǎng)問(wèn)它們。在這里指定的權(quán)限適用于一個(gè)數(shù)據(jù)庫(kù)中的所有表。mysql desc host;【精品文檔】如有侵權(quán),請(qǐng)聯(lián)系網(wǎng)站刪除,僅供學(xué)習(xí)與交流.精品文檔.圖 3.1.2.5 host 表host 表與 db 表結(jié)合使用在一個(gè)較好層次上

21、控制特定主機(jī)對(duì)數(shù)據(jù)庫(kù)的訪(fǎng)問(wèn)權(quán)限,這可能比單獨(dú)使用 db 好些。這個(gè)表不受 GRANT 和 REVOKE 語(yǔ)句的影響。3.2 MySQL 用戶(hù)帳號(hào)管理MySQL 用戶(hù)帳號(hào)管理主要用 grant(授權(quán))和 revoke(撤權(quán))兩個(gè) SQL 指令來(lái)管理。這兩個(gè)指令實(shí)質(zhì)是通過(guò)操作 user(連接權(quán)限和全局權(quán)限)、db(數(shù)據(jù)庫(kù)級(jí)權(quán)限)、tables_priv(數(shù)據(jù)表級(jí)權(quán)限)、columns_priv(數(shù)據(jù)列級(jí)權(quán)限)四個(gè)權(quán)限表來(lái)分配權(quán)限的。host 權(quán)限表不受這兩個(gè)指令影響。下面將會(huì)詳細(xì)介紹用戶(hù)權(quán)限管理的內(nèi)容。GRANT 語(yǔ)法說(shuō)明:GRANT privileges (columns) #privilege

22、s 表示授予的權(quán)限,columns 表示作用的列(可選) ON what #設(shè)置權(quán)限級(jí)別,全局級(jí)、數(shù)據(jù)庫(kù)級(jí)、數(shù)據(jù)表級(jí)和數(shù)據(jù)列級(jí)TO account #權(quán)限授予的用戶(hù),用user_namehost_name這種用戶(hù)名、主機(jī)名格式IDENTIFIED BY password #設(shè)置用戶(hù)帳號(hào)密碼REQUIRE encryption requirements #設(shè)置經(jīng)由 SSL 連接帳號(hào)WITH grant or resource management options; #設(shè)置帳號(hào)的管理和資源(連接服務(wù)器次數(shù)或查詢(xún)次數(shù)等)選項(xiàng)示例:mysqlgrant all on db.* to testlocal

23、host identified by test;上例運(yùn)行后的效果是,test 用戶(hù)只能通過(guò)test密碼從本機(jī)訪(fǎng)問(wèn) db 數(shù)據(jù)庫(kù)【精品文檔】如有侵權(quán),請(qǐng)聯(lián)系網(wǎng)站刪除,僅供學(xué)習(xí)與交流.精品文檔.mysqlgrant all on db.* to test% identified by test;上例運(yùn)行后的效果是,test 用戶(hù)可通過(guò)test密碼從任意計(jì)算機(jī)上訪(fǎng)問(wèn) db 數(shù)據(jù)庫(kù)。 %代表任意字符, _代表一個(gè)任意字符。主機(jī)名部份還可以是 IP 地址。表 3.2.1 訪(fǎng)問(wèn)權(quán)限表權(quán)限權(quán)限說(shuō)明CREATE TEMPORARY TABLES創(chuàng)建臨時(shí)數(shù)據(jù)表EXECUTE執(zhí)行存儲(chǔ)過(guò)程(暫不支持)FILE操作系

24、統(tǒng)文件GRANT OPTION可把本帳號(hào)的權(quán)限授予其它用戶(hù)LOCK TABLES鎖定指定數(shù)據(jù)表PROCESS查看運(yùn)行著的線(xiàn)程信息RELOAD重新加載權(quán)限表或刷新日志及緩沖區(qū)REPLICATION CLIENT可查詢(xún)主/從服務(wù)器主機(jī)名REPLICATION SLAVE運(yùn)行一個(gè)鏡像從服務(wù)器SHOW DATABASES可運(yùn)行 SHOW DATABASES 指令SHUTDOWN關(guān)閉數(shù)據(jù)庫(kù)服務(wù)器SUPER可用 kill 終止線(xiàn)程以及進(jìn)行超級(jí)用戶(hù)操作ALTER可修改表和索引的結(jié)構(gòu)CREATE創(chuàng)建數(shù)據(jù)庫(kù)和數(shù)據(jù)表DELETE刪除數(shù)據(jù)表中的數(shù)據(jù)行DROP刪除數(shù)據(jù)表和數(shù)據(jù)行INDEX建立或刪除索引INSERT插入

25、數(shù)據(jù)行REFERENCES(暫時(shí)不支持)SELECT查詢(xún)數(shù)據(jù)行UPDATE更新數(shù)據(jù)行ALL所有權(quán)限,但不包括 GRANT。USAGE無(wú)權(quán)限權(quán)限表 3.2.2 權(quán)限作用范圍(由 ON 子句設(shè)置)【精品文檔】如有侵權(quán),請(qǐng)聯(lián)系網(wǎng)站刪除,僅供學(xué)習(xí)與交流.精品文檔.權(quán)限限定符作用范圍ON *.*全局級(jí)權(quán)限,作用于所有數(shù)據(jù)庫(kù)ON *全局級(jí)權(quán)限,若未指定默認(rèn)數(shù)據(jù)庫(kù),其作用范圍是所有數(shù)據(jù)庫(kù),否則,其作用范圍是當(dāng)前數(shù)據(jù)庫(kù)ON db_name.*數(shù)據(jù)庫(kù)級(jí)權(quán)限,作用于指定數(shù)據(jù)庫(kù)里的所有數(shù)據(jù)表ON db_name.tbl_name數(shù)據(jù)表級(jí)權(quán)限,作用于數(shù)據(jù)表里的所有數(shù)據(jù)列ON tbl_name數(shù)據(jù)表級(jí)權(quán)限,作用于默認(rèn)數(shù)

26、據(jù)庫(kù)中指定的數(shù)據(jù)表里的所有數(shù)據(jù)列USAGE 權(quán)限的用法:修改與權(quán)限無(wú)關(guān)的帳戶(hù)項(xiàng),如:mysqlGRANT USAGE ON *.* TO account IDENTIFIED BY new_password; #修改密碼mysqlGRANT USAGE ON *.* TO account REQUIRE SSL; #啟用 SSL 連接mysqlGRANT USAGE ON *.* TO account WITH MAX_CONNECTIONS_PER_HOUR 10;#設(shè)置資源 擁有 WITH GRANT OPTION 權(quán)限的用戶(hù)可把自已所擁用的權(quán)限轉(zhuǎn)授給其他用戶(hù),如:mysqlGRANT A

27、LL ON db.* TO test% IDENTIFIED BY password WITH GRANT OPTION;這樣 test 用戶(hù)就有權(quán)把該權(quán)限授予其他用戶(hù)。限制資源使用,如:mysqlGRANT ALL ON db.* TO account IDENTIFIED BY password WITH MAX_CONNECTIONS_PER_HOUR 10 MAX_QUERIES_PER_HOUR 200 MAX_UPDATES_PER_HOUR 50;允許 account 用戶(hù)每小時(shí)最多連接 20 次服務(wù)器,每小時(shí)最多發(fā)出 200 條查詢(xún)命令(其中更新命令最多為 50 條)默認(rèn)都是零

28、值,即沒(méi)有限制。FLUSH USER_RESOURCES 和 FLUSH PRIVILEGES 可對(duì)資源限制計(jì)數(shù)器清零。REVOKE 語(yǔ)法說(shuō)明:mysqlREVOKE privileges (columns) ON what FROM account;【精品文檔】如有侵權(quán),請(qǐng)聯(lián)系網(wǎng)站刪除,僅供學(xué)習(xí)與交流.精品文檔.示例:mysqlREVOKE SELECT ON db.* FROM testlocalhost;刪除 test 帳號(hào)從本機(jī)查詢(xún) db 數(shù)據(jù)庫(kù)的權(quán)限REVOKE 可刪除權(quán)限,但不能刪除帳號(hào),即使帳號(hào)已沒(méi)有任何權(quán)限。所以 user 數(shù)據(jù)表里還會(huì)有該帳號(hào)的記錄,要徹底刪除帳號(hào),需用 DE

29、LETE 命令刪除 user 數(shù)據(jù)表的記錄,如:% mysql -u root -pmysqluse mysqlmysqlDELETE FROM user where User=test and Host=localhost;mysql fulsh privileges;REVOKE 不能刪除 REQUIRE 和資源占用的配置。他們是要用 GRANT 來(lái)刪除的,如:GRANT USAGE ON *.* TO account REQUIRE NONE; #刪除 account 帳號(hào)的 SSL連接選項(xiàng)3.3 MD5 加密 3.3.1 數(shù)據(jù)庫(kù)中數(shù)據(jù)加密的原因現(xiàn)在網(wǎng)絡(luò)上一般的網(wǎng)站,稍微完善一點(diǎn)的,往往

30、都需要用戶(hù)先注冊(cè),提供諸如電子郵件、賬號(hào)、密碼等信息以后,成為網(wǎng)站欄目的注冊(cè)用戶(hù),才可以享受網(wǎng)站一些特殊欄目提供的信息或者服務(wù),比如免費(fèi)電子郵件、論壇、聊天等,都需要用戶(hù)注冊(cè)。而對(duì)于電子商務(wù)網(wǎng)站,比如 igo5 等大型電子商務(wù)網(wǎng)站,用戶(hù)需要購(gòu)買(mǎi)商品,就一定需要詳細(xì)而準(zhǔn)確的注冊(cè),而這些信息,往往是用戶(hù)很隱秘的信息,比如電話(huà)、電子郵件、地址等,所以,注冊(cè)信息對(duì)于用戶(hù)和網(wǎng)站都是很重要的資源,不能隨意透露,更加不能存在安全上的隱患。一般將用戶(hù)資料直接保存在數(shù)據(jù)庫(kù)中,并沒(méi)有進(jìn)行任何的保密措施,對(duì)于一些文件型數(shù)據(jù)庫(kù)比如 Access 等,如果有人得到這個(gè)文件,豈不是所有的資料都泄露無(wú)疑?更加重要的是,如果

31、一個(gè)不負(fù)責(zé)任的網(wǎng)管,不需要任何技術(shù)手段,就可以查看網(wǎng)站中的任何資料,如果我們的用戶(hù)信息在數(shù)據(jù)庫(kù)中沒(méi)有加密,對(duì)于網(wǎng)管而言,查看這些信息是太簡(jiǎn)單了。所以,為了增加安全性,我們有必要對(duì)數(shù)據(jù)庫(kù)中的資料進(jìn)行加密,這樣,即使有人得到了整個(gè)數(shù)據(jù)庫(kù),如果沒(méi)有解密算法,也一樣不能查看到數(shù)據(jù)庫(kù)中的【精品文檔】如有侵權(quán),請(qǐng)聯(lián)系網(wǎng)站刪除,僅供學(xué)習(xí)與交流.精品文檔.用戶(hù)信息。3.3.2 加密方式在現(xiàn)階段,我們一般認(rèn)為存在兩種加密方式,單向加密和雙向加密。雙向加密是加密算法中最常用的,它將我們可以直接理解的明文數(shù)據(jù)加密為我們不可直接理解的密文數(shù)據(jù),然后,在需要的時(shí)候,可以使用一定的算法將這些加密以后的密文解密為原來(lái)可以理

32、解的明文。雙向加密適合于隱秘通訊。單向加密剛好相反,只能對(duì)數(shù)據(jù)進(jìn)行加密,也就是說(shuō),沒(méi)有辦法對(duì)加密以后的數(shù)據(jù)進(jìn)行解密。MD5 就是采用單向加密的加密算法,對(duì)于 MD5 而言,有兩個(gè)特性是很重要的,第一是任意兩段明文數(shù)據(jù),加密以后的密文不能是相同的;第二是任意一段明文數(shù)據(jù),經(jīng)過(guò)加密以后,其結(jié)果必須永遠(yuǎn)是不變的。前者的意思是不可能有任意兩段明文加密以后得到相同的密文,后者的意思是如果我們加密特定的數(shù)據(jù),得到的密文一定是相同的。 3.3.3 Md5 加密原理對(duì) MD5 算法簡(jiǎn)要的敘述可以為:MD5 以 512 位分組來(lái)處理輸入的信息,且每一分組又被劃分為 16 個(gè) 32 位子分組,經(jīng)過(guò)了一系列的處理后

33、,算法的輸出由四個(gè) 32 位分組組成,將這四個(gè) 32 位分組級(jí)聯(lián)后將生成一個(gè) 128 位散列值。在 MD5 算法中,首先需要對(duì)信息進(jìn)行填充,使其字節(jié)長(zhǎng)度對(duì) 512 求余的結(jié)果等于448。因此,信息的字節(jié)長(zhǎng)度(Bits Length)將被擴(kuò)展至 N*512+448,即 N*64+56 個(gè)字節(jié)(Bytes) ,N 為一個(gè)正整數(shù)。填充的方法如下,在信息的后面填充一個(gè) 1 和無(wú)數(shù)個(gè) 0,直到滿(mǎn)足上面的條件時(shí)才停止用 0 對(duì)信息的填充。然后,在在這個(gè)結(jié)果后面附加一個(gè)以 64 位二進(jìn)制表示的填充前信息長(zhǎng)度。經(jīng)過(guò)這兩步的處理,現(xiàn)在的信息字節(jié)長(zhǎng)度=N*512+448+64=(N+1)*512,即長(zhǎng)度恰好是 5

34、12 的整數(shù)倍。這樣做的原因是為滿(mǎn)足后面處理中對(duì)信息長(zhǎng)度的要求。MD5 中有四個(gè) 32 位被稱(chēng)作鏈接變量(Chaining Variable)的整數(shù)參數(shù),他們分別為:A=0 x01234567,B=0 x89abcdef,C=0 xfedcba98,D=0 x76543210。當(dāng)設(shè)置好這四個(gè)鏈接變量后,就開(kāi)始進(jìn)入算法的四輪循環(huán)運(yùn)算。循環(huán)的次數(shù)是信息中 512 位信息分組的數(shù)目?!揪肺臋n】如有侵權(quán),請(qǐng)聯(lián)系網(wǎng)站刪除,僅供學(xué)習(xí)與交流.精品文檔.將上面四個(gè)鏈接變量復(fù)制到另外四個(gè)變量中:A 到 a,B 到 b,C 到 c,D 到 d。主循環(huán)有四輪(MD4 只有三輪) ,每輪循環(huán)都很相似。第一輪進(jìn)行 1

35、6 次操作。每次操作對(duì) a、b、c 和 d 中的其中三個(gè)作一次非線(xiàn)性函數(shù)運(yùn)算,然后將所得結(jié)果加上第四個(gè)變量,文本的一個(gè)子分組和一個(gè)常數(shù)。再將所得結(jié)果向右環(huán)移一個(gè)不定的數(shù),并加上 a、b、c 或 d 中之一。最后用該結(jié)果取代 a、b、c 或 d 中之一。以一下是每次操作中用到的四個(gè)非線(xiàn)性函數(shù)(每輪一個(gè)) 。F(X,Y,Z) =(X&Y)|(X)&Z)G(X,Y,Z) =(X&Z)|(Y&(Z)H(X,Y,Z) =XYZI(X,Y,Z)=Y(X|(Z)(&是與,|是或,是非,是異或)這四個(gè)函數(shù)的說(shuō)明:如果 X、Y 和 Z 的對(duì)應(yīng)位是獨(dú)立和均勻的,那么結(jié)果的每

36、一位也應(yīng)是獨(dú)立和均勻的。F 是一個(gè)逐位運(yùn)算的函數(shù)。即,如果 X,那么 Y,否則 Z。函數(shù) H 是逐位奇偶操作符。MD5 在實(shí)際中的一個(gè)應(yīng)用就是對(duì)數(shù)據(jù)庫(kù)中的用戶(hù)信息加密,當(dāng)用戶(hù)創(chuàng)建一個(gè)新的賬號(hào)或者密碼,他的信息不是直接保存到數(shù)據(jù)庫(kù),而是經(jīng)過(guò)一次加密以后再保存,這樣,即使這些信息被泄露,也不能立即理解這些信息的真正含義。 3.3.4 具體算法在 java 語(yǔ)言中,實(shí)現(xiàn) MD5 加密是一件很簡(jiǎn)單的事情,因?yàn)?java JDK 已經(jīng)為我們提供了相關(guān)的類(lèi)。我們只需要調(diào)用就可以了。下面我來(lái)說(shuō)一下具體的算法:/對(duì)字符串進(jìn)行MD5加密public class Jiami public static Strin

37、g MD5(String inStr) MessageDigest md5 = null;try md5 = MessageDigest.getInstance(MD5); catch (Exception e) System.out.println(e.toString();e.printStackTrace();return ;char charArray = inStr.toCharArray();byte byteArray = new bytecharArray.length;【精品文檔】如有侵權(quán),請(qǐng)聯(lián)系網(wǎng)站刪除,僅供學(xué)習(xí)與交流.精品文檔.for (int i = 0; i char

38、Array.length; i+)byteArrayi = (byte) charArrayi;byte md5Bytes = md5.digest(byteArray);StringBuffer hexValue = new StringBuffer();for (int i = 0; i md5Bytes.length; i+) int val = (int) md5Bytesi) & 0 xff;if (val 16)hexValue.append(0);hexValue.append(Integer.toHexString(val);return hexValue.toStri

39、ng();為了再次增加安全性,可以對(duì) MD5 進(jìn)行異或運(yùn)算。具體算法見(jiàn)附錄。運(yùn)行結(jié)果如下:4 總結(jié)本文主要對(duì) MySQL 數(shù)據(jù)庫(kù)的安全配置、MySQL 用戶(hù)帳號(hào)管理以及使用 MD5 加密提高數(shù)據(jù)庫(kù)前臺(tái)和后臺(tái)數(shù)據(jù)安全性做了詳細(xì)研究。通過(guò)本次論文的編寫(xiě),讓我了解了 MySQL 數(shù)據(jù)庫(kù)的安全配置、用戶(hù)賬號(hào)管理、增刪用戶(hù)等知識(shí)以及如何使用 MD5 加密地?cái)?shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行加密。在今后的軟件開(kāi)發(fā)中,我知道如何盡可能的提高數(shù)據(jù)庫(kù)的安全性,保證資料不被竊取。由于 MySQL 數(shù)據(jù)庫(kù)是個(gè)相當(dāng)復(fù)雜的管理數(shù)據(jù)的系統(tǒng),有很多問(wèn)題我沒(méi)有實(shí)際操作,有很多實(shí)際操作結(jié)果與書(shū)籍中的不一致,還有很多問(wèn)題書(shū)籍中沒(méi)有詳細(xì)講解等等,所以這次論文只做了簡(jiǎn)單研究,有些地方講解的不清楚。這都是本次論文的不足之處。我希望通過(guò)以后的進(jìn)一步學(xué)習(xí),能夠更好的掌握 MySQL 數(shù)據(jù)庫(kù)的安全管理。參考文獻(xiàn):參考文獻(xiàn):1唐漢明,蘭麗華,關(guān)寶軍等MySQL 數(shù)據(jù)庫(kù)優(yōu)化與管理維護(hù) 北京:人民郵電出版社,2008 年,第 25-45 頁(yè)。2David Litchfield Chris Anley 著,閆雷鳴 刑蘇霄 翻譯 數(shù)據(jù)庫(kù)黑客大曝光 出版地:北京 清華大學(xué)出版社, 2006 年,第 222-266 頁(yè)3朱小平 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)安全技術(shù)的研究與實(shí)現(xiàn) 同濟(jì)大學(xué)碩士論文 2006 年,第 5-34頁(yè)4高延玲 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)安全研究與應(yīng)用 西安電子科技

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論