資源描述:
《mysql教程-建立加密連接--》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫(kù)。
1、MYSQL教程:建立加密連接>> MySQL服務(wù)器通過(guò)權(quán)限表來(lái)控制用戶對(duì)數(shù)據(jù)庫(kù)的訪問(wèn),權(quán)限表存放在mysql數(shù)據(jù)庫(kù)里,由mysql_install_db腳本初始化。這些權(quán)限表分別user,db,table_priv,columns_priv和host。下面分別介紹一下這些表的結(jié)構(gòu)和內(nèi)容: user權(quán)限表:記錄允許連接到服務(wù)器的用戶帳號(hào)信息,里面的權(quán)限是全局級(jí)的?! b權(quán)限表:記錄各個(gè)帳號(hào)在各個(gè)數(shù)據(jù)庫(kù)上的操作權(quán)限?! able_priv權(quán)限表:記錄數(shù)據(jù)表級(jí)的操作權(quán)限?! olumns_priv權(quán)限表:記錄數(shù)據(jù)列級(jí)的操作權(quán)限。 host權(quán)限
2、表:配合db權(quán)限表對(duì)給定主機(jī)上數(shù)據(jù)庫(kù)級(jí)操作權(quán)限作更細(xì)致的控制。這個(gè)權(quán)限表不受GRANT和REVOKE語(yǔ)句的影響?! 〈蠹易⒁獾剑陨蠙?quán)限沒有限制到數(shù)據(jù)行級(jí)的設(shè)置。在MySQL只要實(shí)現(xiàn)數(shù)據(jù)行級(jí)控制就要通過(guò)編寫程序(使用GET-LOCK()函數(shù))來(lái)實(shí)現(xiàn)。 MySQL的版本很多,所以權(quán)限表的結(jié)構(gòu)在不同版本間會(huì)有不同。如果出現(xiàn)這種情況,可用mysql_fix_privilege_tables腳本來(lái)修正。運(yùn)行方式如下: %mysql_fix_privilege_tablesrootpassp_table_priv和Lock_tables_priv權(quán)限。
3、 MySQL的權(quán)限表定義了兩部份內(nèi)容,一個(gè)部份定義權(quán)限的范圍,即誰(shuí)(帳戶)可以從哪里(客戶端主機(jī))訪問(wèn)什么(數(shù)據(jù)庫(kù)、數(shù)據(jù)表、數(shù)據(jù)列);另一部份定義權(quán)限,即控制用戶可以進(jìn)行的操作。下面是一些常用的權(quán)限介紹,可直接在GRANT語(yǔ)句中使用。 CREATETEMPORARYTABLES,允許創(chuàng)建臨時(shí)表的權(quán)限。 EXECUTE,允許執(zhí)行存儲(chǔ)過(guò)程的權(quán)限,存儲(chǔ)過(guò)程在MySQL的當(dāng)前版本中還沒實(shí)現(xiàn)。 FILE,允許你通過(guò)MySQL服務(wù)器去讀寫服務(wù)器主機(jī)上的文件。但有一定限制,只能訪問(wèn)對(duì)任何用戶可讀的文件,通過(guò)服務(wù)器寫的文件必須是尚未存在的,以防止服務(wù)器寫的文
4、件覆蓋重要的系統(tǒng)文件。盡管有這些限制,但為了安全,盡量不要把該權(quán)限授予普通用戶。并且不要以root用戶來(lái)運(yùn)行MySQL服務(wù)器,因?yàn)閞oot用戶可在系統(tǒng)任何地方創(chuàng)建文件?! RANTOPTION,允許把你自已所擁有的權(quán)限再轉(zhuǎn)授給其他用戶?! OCKTABLES,可以使用LOCKTABLES語(yǔ)句來(lái)鎖定數(shù)據(jù)表 PROCESS,允許你查看和終止任何客戶線程。SHOASTER,PURGEMASTERLOGS以及修改全局級(jí)變量的SET語(yǔ)句。SUPER還允許你根據(jù)存放在DES密鑰文件里的密鑰進(jìn)行DES解密的工作?! ser權(quán)限表中有一個(gè)ssl_type數(shù)
5、據(jù)列,用來(lái)說(shuō)明連接是否使用加密連接以及使用哪種類型的連接,它是一個(gè)ENUM類型的數(shù)據(jù)列,可能的取值有: NONE,默認(rèn)值,表示不需加密連接?! NY,表示需要加密連接,可以是任何一種加密連接。由GRANT的REQUIRESSL子句設(shè)置?! 509,表示需要加密連接,并要求客戶提供一份有效的X509證書。由GRANT的REQUIREX509子句設(shè)置?! PECIFIED,表示加密連接需滿足一定要求,由REQUIRE子句的ISSUER,SUBJECT或CIPHER的值進(jìn)行設(shè)置。只要ssl_type列的值為SPECIFIED,則MySQL會(huì)去檢查
6、ssl_cipher(加密算法)、x509_issuer(證書簽發(fā)者)和x509_subject(證書主題)列的值。這幾列的列類型是BLOB類型的?! ser權(quán)限表里還有幾列是設(shè)置帳戶資源使用情況的,如果以下數(shù)據(jù)列中的數(shù)全為零,則表示沒有限制: max_connections,每小時(shí)可連接服務(wù)器的次數(shù)?! ax_questions,每小時(shí)可發(fā)出查詢命令數(shù)?! ax_updates,每小時(shí)可以發(fā)出的數(shù)據(jù)修改類查詢命令數(shù)?! ≡O(shè)置權(quán)限表應(yīng)注意的事項(xiàng): 刪除所有匿名用戶?! 〔槌鏊袥]有口令用戶,重新設(shè)置口令??捎靡韵旅畈樵兛湛诹钣脩簦骸
7、ysql>SELECThost,userFROMuserysql>CREATETABLEetc_passysql>LOADDATAINFILE'/etc/passwd'INTOT12下一頁(yè)>>>>這篇文章來(lái)自..,。ABLEetc_passysql>SELECT*FROMetc_passysql>usetest;mysql>createtabletemp(blongblob);mysql>shoysql>loaddatainfile'./db/xxx.frm'intot
8、abletempfieldsescapedby''linesterminatedby'';