mysql密码安全级别_Mysql数据库的安全性问题释疑
數(shù)據(jù)庫(kù)系統(tǒng)的安全性包括很多方面。由于很多情況下,數(shù)據(jù)庫(kù)服務(wù)器容許客戶(hù)機(jī)從網(wǎng)絡(luò)上連接,因此客戶(hù)機(jī)連接的安全對(duì)MySQL數(shù)據(jù)庫(kù)安全有很重要的影響。
不在客戶(hù)機(jī)的命令行上提供密碼
使用mysql、mysqladmin等客戶(hù)機(jī)用一個(gè)用戶(hù)身份與MySQL服務(wù)器連接時(shí),需要為連接提供密碼。
1、可以在命令行上提供密碼
shell>mysql –u root –pmypass
注意,-p選項(xiàng)與密碼之間不可有空格,否則會(huì)提示你輸入密碼,并報(bào)錯(cuò)。
你也可以使用長(zhǎng)格式
shell>mysql –user=root –password=mypass
現(xiàn)在你可以考察這樣做的后果:
在Unix上,$ps –aux | grep mysql
在win9x上,你可以按住Ctrl+Alt+Del鍵,NT上你可以打開(kāi)任務(wù)管理器。
你發(fā)現(xiàn)了什么,你發(fā)現(xiàn)密碼清清楚楚的顯示在你的面前。所以,你無(wú)論何時(shí)也不要這么做。
所以你需要讓客戶(hù)機(jī)提示你的密碼:
shell>mysql –u root –p
你也可以使用選項(xiàng)文件提供密碼,但是注意為了安全,不能在選項(xiàng)文件中存儲(chǔ)密碼。你可以只提供password選項(xiàng),讓客戶(hù)機(jī)提示你輸入密碼。
使用SSH加密客戶(hù)機(jī)連接
這是一個(gè)關(guān)于怎樣用SSH 得到一個(gè)安全的連接遠(yuǎn)程MySQL服務(wù)器的注意事項(xiàng)(David Carlson)。
在你的windows機(jī)器上安裝SSH客戶(hù) -
我使用了一個(gè)來(lái)自http://www.doc.ic.ac.uk/~ci2/ssh/的免費(fèi)SSH客戶(hù)。其他有用的鏈接:
http://www.npaci.edu/Security/npaci_security_software.html
http://www.npaci.edu/Security/samples/ssh32_windows/index.html.
啟動(dòng)SSH。設(shè)置主機(jī)名字 = 你的MySql服務(wù)器名或IP地址,設(shè)置userid=你的用戶(hù)名登錄到你的服務(wù)器。
點(diǎn)擊“l(fā)ocal forwords”。設(shè)定 local port: 3306, host: localhost, remote port:
3306
保存一切,否則下次你將必須再做一遍。
用SSH登錄到你的服務(wù)器。
啟動(dòng)一些ODBC應(yīng)用程序(例如Access)。
創(chuàng)造一個(gè)新文件并且用ODBC驅(qū)動(dòng)程序鏈接到mySQL,就像你通常做的一樣,除了對(duì)服務(wù)器用用戶(hù)“l(fā)ocalhost”。
搞定。它對(duì)一個(gè)直接的因特網(wǎng)連接工作得很好。
不要使用Unix的root用戶(hù)運(yùn)行MySQL守護(hù)進(jìn)程
不要作為Unix的root用戶(hù)運(yùn)行MySQL守護(hù)進(jìn)程。mysqld能以任何用戶(hù)運(yùn)行,你也可以創(chuàng)造一個(gè)新的Unix用戶(hù)mysql使一切更安全。如果你作為其它Unix用戶(hù)運(yùn)行mysqld,你不需要改變?cè)趗ser表中的root用戶(hù)名,因?yàn)镸ySQL用戶(hù)名與Unix
用戶(hù)名沒(méi)關(guān)系。
你可以作為其它Unix用戶(hù)編輯mysql.server啟動(dòng)腳本mysqld。或者使用選項(xiàng)文件。有關(guān)如何用非root用戶(hù)啟動(dòng)MySQL服務(wù)器的細(xì)節(jié),請(qǐng)見(jiàn)第二章。
數(shù)據(jù)庫(kù)目錄的安全
MySQL服務(wù)器提供了一個(gè)通過(guò)mysql數(shù)據(jù)庫(kù)中的授權(quán)表,實(shí)現(xiàn)了一個(gè)十分靈活的權(quán)限系統(tǒng),保證了從網(wǎng)絡(luò)訪(fǎng)問(wèn)數(shù)據(jù)的安全性。但是,如果服務(wù)器主機(jī)上的其它用戶(hù)擁有對(duì)服務(wù)器目錄的直接訪(fǎng)問(wèn)權(quán),那么你的服務(wù)器的數(shù)據(jù)仍舊是不安全的。
一般你可能用一個(gè)非特權(quán)的Unix用戶(hù)執(zhí)行守護(hù)程序。檢查那個(gè)運(yùn)行mysqld的Unix用戶(hù)是唯一的在數(shù)據(jù)庫(kù)目錄下有讀/寫(xiě)權(quán)限的用戶(hù)。
可能的安全漏洞
顯然,你不會(huì)讓服務(wù)器主機(jī)上的其它用戶(hù)擁有對(duì)數(shù)據(jù)庫(kù)目錄文件的寫(xiě)訪(fǎng)問(wèn)權(quán),但是,僅僅是讀訪(fǎng)問(wèn)權(quán)也非常危險(xiǎn)。
由于象GRANT和SET
PASSWORD這樣的查詢(xún)都被記錄到日志中去了,常規(guī)和更新日志文件包含了有關(guān)密碼的敏感查詢(xún)文本。如果一個(gè)攻具有對(duì)這些日志的讀訪(fǎng)問(wèn)權(quán),那么他只要在日志文件中查找GRANT或PASSWORD這樣的敏感單詞,就很容易找到密碼的明文。
對(duì)于表文件的讀訪(fǎng)問(wèn)也是很危險(xiǎn)的,竊取文件并使MySQL以及以純文本的形式顯示表的內(nèi)容是微不足道的事。可以按下列步驟進(jìn)行:
1、安裝一個(gè)新的MySQL分發(fā),可以是在另一臺(tái)主機(jī)上,也可以就在當(dāng)前的服務(wù)器主機(jī)上安裝,使用與正式服務(wù)器不同的端口、套接字和數(shù)據(jù)文件。
2、將竊取的表的相應(yīng)文件拷貝到新服務(wù)數(shù)據(jù)庫(kù)目錄中的test目錄下
3、然后就可以啟動(dòng)作案服務(wù)器,可以隨意訪(fǎng)問(wèn)所竊取表的內(nèi)容。
在Unix設(shè)置合適的數(shù)據(jù)庫(kù)目錄權(quán)限
如果要消除這些安全漏洞,就要安排數(shù)據(jù)庫(kù)目錄及其中所有文件和目錄的所有權(quán),是的只有啟動(dòng)服務(wù)器的專(zhuān)用帳戶(hù)才可以訪(fǎng)問(wèn)它們。操作步驟如下:
1、切換到root用戶(hù)
$su
2、設(shè)置數(shù)據(jù)庫(kù)目錄及其中所有文件目錄的所有權(quán)為運(yùn)行該服務(wù)器的帳號(hào)所有,在本書(shū)中一直將這個(gè)帳號(hào)假定為mysql,把所有的組設(shè)為root組
%chown –R mysql:root DATADIR
3、修改數(shù)據(jù)庫(kù)目錄及其中所有文件目錄的權(quán)限為只有所有者可以讀寫(xiě)
%chmod –R go-rwx DATADIR
在NT系統(tǒng)中設(shè)置合適的數(shù)據(jù)庫(kù)目錄權(quán)限
在NT系統(tǒng)中的數(shù)據(jù)庫(kù)目錄的安全性可能比較簡(jiǎn)單:
讀者可能想到,把所有目錄文件改為只有某個(gè)帳戶(hù)administrator例如可讀寫(xiě)。但是,這樣會(huì)有一個(gè)問(wèn)題,就是這能在
administrator帳戶(hù)中用手動(dòng)啟動(dòng)獨(dú)立的服務(wù)器,如果讓mysql系統(tǒng)服務(wù)自動(dòng)啟動(dòng)的方法也不可行,解決方法是讓數(shù)據(jù)庫(kù)目錄也可被
administrators組用戶(hù)讀寫(xiě),這樣MySQL服務(wù)器就可以用系統(tǒng)服務(wù)的方法自動(dòng)啟動(dòng)了,也可以在任何帳戶(hù)中用net start mysql啟動(dòng)。
另外一個(gè)問(wèn)題是,如果你在非administrators組用戶(hù)中或者從網(wǎng)絡(luò)都無(wú)法建立數(shù)據(jù)庫(kù)連接,因?yàn)闆](méi)有數(shù)據(jù)庫(kù)目錄的讀的權(quán)利,如果要正常使用,還需要
寫(xiě)的權(quán)利。解決方法是讓SYSTEM組用戶(hù)能夠隊(duì)數(shù)據(jù)庫(kù)目錄讀寫(xiě)。
由于許可證和費(fèi)用的原因,通常建議你在Linux服務(wù)器上使用MySQL,在Windows平臺(tái)之用來(lái)測(cè)試或者數(shù)據(jù)錄入工作。但是,如果你要在Windows上使用的話(huà),可以注意本小節(jié)的一些內(nèi)容。
影響安全的mysqld選項(xiàng)
下列mysqld選項(xiàng)影響安全:
--secure
由gethostbyname()系統(tǒng)調(diào)用返回的IP數(shù)字被檢查,確保他們解析回到原來(lái)的主機(jī)名。這對(duì)某些外人通過(guò)模仿其它主機(jī)獲得存取權(quán)限變得更難。這個(gè)選項(xiàng)也增加一些聰明的主機(jī)名檢查。在MySQL3.21里,選擇缺省是關(guān)掉的,因?yàn)樗袝r(shí)它花很長(zhǎng)時(shí)間執(zhí)行反向解析。MySQL
3.22緩存主機(jī)名并缺省地啟用了這個(gè)選項(xiàng)。
--skip-grant-tables
這個(gè)選項(xiàng)導(dǎo)致服務(wù)器根本不使用權(quán)限系統(tǒng)。這給每個(gè)人以完全存取所有的數(shù)據(jù)庫(kù)的權(quán)力!(通過(guò)執(zhí)行mysqladmin
reload,你能告訴一個(gè)正在運(yùn)行的服務(wù)器再次開(kāi)始使用授權(quán)表。)
--skip-name-resolve
主機(jī)名不被解析。所有在授權(quán)表的Host的列值必須是IP數(shù)字或localhost。
--skip-networking
在網(wǎng)絡(luò)上不允許TCP/IP連接。所有到mysqld的連接必須經(jīng)由Unix套接字進(jìn)行。這個(gè)選項(xiàng)對(duì)使用MIT-pthreads的系統(tǒng)是不合適的,因?yàn)镸IT-pthreads包不支持Unix套接字。
.pb{}
.pb textarea{font-size:14px; margin:10px; font-family:"宋體"; background:#FFFFEE; color:#000066}
.pb_t{line-height:30px; font-size:14px; color:#000; text-align:center;}
/* 分頁(yè) */
.pagebox{overflow:hidden; zoom:1; font-size:12px; font-family:"宋體",sans-serif;}
.pagebox span{float:left; margin-right:2px; overflow:hidden; text-align:center; background:#fff;}
.pagebox span a{display:block; overflow:hidden; zoom:1; _float:left;}
.pagebox span.pagebox_pre_nolink{border:1px #ddd solid; width:53px; height:21px; line-height:21px; text-align:center; color:#999; cursor:default;}
.pagebox span.pagebox_pre{color:#3568b9; height:23px;}
.pagebox span.pagebox_pre a,.pagebox span.pagebox_pre a:visited,.pagebox span.pagebox_next a,.pagebox span.pagebox_next a:visited{border:1px #9aafe5 solid; color:#3568b9; text-decoration:none; text-align:center; width:53px; cursor:pointer; height:21px; line-height:21px;}
.pagebox span.pagebox_pre a:hover,.pagebox span.pagebox_pre a:active,.pagebox span.pagebox_next a:hover,.pagebox span.pagebox_next a:active{color:#363636; border:1px #2e6ab1 solid;}
.pagebox span.pagebox_num_nonce{padding:0 8px; height:23px; line-height:23px; color:#fff; cursor:default; background:#296cb3; font-weight:bold;}
.pagebox span.pagebox_num{color:#3568b9; height:23px;}
.pagebox span.pagebox_num a,.pagebox span.pagebox_num a:visited{border:1px #9aafe5 solid; color:#3568b9; text-decoration:none; padding:0 8px; cursor:pointer; height:21px; line-height:21px;}
.pagebox span.pagebox_num a:hover,.pagebox span.pagebox_num a:active{border:1px #2e6ab1 solid;color:#363636;}
.pagebox span.pagebox_num_ellipsis{color:#393733; width:22px; background:none; line-height:23px;}
.pagebox span.pagebox_next_nolink{border:1px #ddd solid; width:53px; height:21px; line-height:21px; text-align:center; color:#999; cursor:default;}
總結(jié)
以上是生活随笔為你收集整理的mysql密码安全级别_Mysql数据库的安全性问题释疑的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 网上办信用卡没有座机号怎么办
- 下一篇: SharePoint 2016文档库所在