下面將提供保障MySQL安全的最佳方法。
霍爾果斯網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站設(shè)計(jì)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營(yíng)維護(hù)。成都創(chuàng)新互聯(lián)從2013年創(chuàng)立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)。
1、避免從互聯(lián)網(wǎng)訪問(wèn)MySQL數(shù)據(jù)庫(kù),確保特定主機(jī)才擁有訪問(wèn)特權(quán)
直接通過(guò)本地網(wǎng)絡(luò)之外的計(jì)算機(jī)改變生產(chǎn)環(huán)境中的數(shù)據(jù)庫(kù)是異常危險(xiǎn)的。有時(shí),管理員會(huì)打開主機(jī)對(duì)數(shù)據(jù)庫(kù)的訪問(wèn):
GRANT ALL ON *.* TO 'root'@'%';
這其實(shí)是完全放開了對(duì)root的訪問(wèn)。所以,把重要的操作限制給特定主機(jī)非常重要:
GRANT ALL ON *.* TO 'root'@'localhost';
GRANT ALL ON *.* TO 'root'@'myip.athome'
FLUSH PRIVILEGES
此時(shí),你仍有完全的訪問(wèn),但只有指定的IP(不管其是否靜態(tài))可以訪問(wèn)。
2、定期備份數(shù)據(jù)庫(kù)
任何系統(tǒng)都有可能發(fā)生災(zāi)難。服務(wù)器、MySQL也會(huì)崩潰,也有可能遭受入侵,數(shù)據(jù)有可能被刪除。只有為最糟糕的情況做好了充分的準(zhǔn)備,才能夠在事后快速地從災(zāi)難中恢復(fù)。企業(yè)最好把備份過(guò)程作為服務(wù)器的一項(xiàng)日常工作。
3、禁用或限制遠(yuǎn)程訪問(wèn)
前面說(shuō)過(guò),如果使用了遠(yuǎn)程訪問(wèn),要確保只有定義的主機(jī)才可以訪問(wèn)服務(wù)器。這一般是通過(guò)TCP wrappers、iptables或任何其它的防火墻軟件或硬件實(shí)現(xiàn)的。
為限制打開網(wǎng)絡(luò)socket,管理員應(yīng)當(dāng)在my.cnf或my.ini的[mysqld]部分增加下面的參數(shù):
skip-networking
這些文件位于windows的C:\Program Files\MySQL\MySQL Server 5.1文件夾中,或在Linux中,my.cnf位于/etc/,或位于/etc/mysql/。這行命令在MySQL啟動(dòng)期間,禁用了網(wǎng)絡(luò)連接的初始化。請(qǐng)注意,在這里仍可以建立與MySQL服務(wù)器的本地連接。
另一個(gè)可行的方案是,強(qiáng)迫MySQL僅監(jiān)聽本機(jī),方法是在my.cnf的[mysqld]部分增加下面一行:
bind-address=127.0.0.1
如果企業(yè)的用戶從自己的機(jī)器連接到服務(wù)器或安裝到另一臺(tái)機(jī)器上的web服務(wù)器,你可能不太愿意禁用網(wǎng)絡(luò)訪問(wèn)。此時(shí),不妨考慮下面的有限許可訪問(wèn):
mysql GRANT SELECT, INSERT ON mydb.* TO 'someuser'@'somehost';
這里,你要把someuser換成用戶名,把somehost換成相應(yīng)的主機(jī)。
4、設(shè)置root用戶的口令并改變其登錄名
在linux中,root用戶擁有對(duì)所有數(shù)據(jù)庫(kù)的完全訪問(wèn)權(quán)。因而,在Linux的安裝過(guò)程中,一定要設(shè)置root口令。當(dāng)然,要改變默認(rèn)的空口令,其方法如下:
Access MySQL控制臺(tái):$ mysql -u root -p
在MySQL控制臺(tái)中執(zhí)行:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');
在實(shí)際操作中,只需將上面一行的new_password換成實(shí)際的口令即可。
在Linux控制臺(tái)中更改root口令的另一種方法是使用mysqladmin工具:
$ mysqladmin -u root password new_password
此時(shí),也是將上面一行的new_password換成實(shí)際的口令即可。
當(dāng)然,這是需要使用強(qiáng)口令來(lái)避免強(qiáng)力攻擊。
為了更有效地改進(jìn)root用戶的安全性,另一種好方法是為其改名。為此,你必須更新表用戶中的mySQL數(shù)據(jù)庫(kù)。在MySQL控制臺(tái)中進(jìn)行操作:
USE mysql;
UPDATE user SET user="another_username" WHERE user="root";
FLUSH PRIVILEGES;
然后,通過(guò)Linux訪問(wèn)MySQL控制臺(tái)就要使用新用戶名了:
$ mysql -u another_username -p
5、移除測(cè)試(test)數(shù)據(jù)庫(kù)
在默認(rèn)安裝的MySQL中,匿名用戶可以訪問(wèn)test數(shù)據(jù)庫(kù)。我們可以移除任何無(wú)用的數(shù)據(jù)庫(kù),以避免在不可預(yù)料的情況下訪問(wèn)了數(shù)據(jù)庫(kù)。因而,在MySQL控制臺(tái)中,執(zhí)行:
DROP DATABASE test;
原文鏈接:
數(shù)據(jù)庫(kù)安全策略是涉及信息安全的高級(jí)指導(dǎo)方針,這些策略根據(jù)用戶需要、安裝環(huán)境、建立規(guī)則和法律等方面的限制來(lái)制定。
數(shù)據(jù)庫(kù)系統(tǒng)的基本安全性策略主要是一些基本性安全的問(wèn)題,如訪問(wèn)控制、偽裝數(shù)據(jù)的排除、用戶的認(rèn)證、可靠性,這些問(wèn)題是整個(gè)安全性問(wèn)題的基本問(wèn)題。數(shù)據(jù)庫(kù)的安全策略主要包含以下幾個(gè)方面:
1.保證數(shù)據(jù)庫(kù)存在安全
數(shù)據(jù)庫(kù)是建立在主機(jī)硬件、操作系統(tǒng)和網(wǎng)絡(luò)上的系統(tǒng),因此要保證數(shù)據(jù)庫(kù)安全,首先應(yīng)該確保數(shù)據(jù)庫(kù)存在安全。預(yù)防因主機(jī)掉電或其他原因引起死機(jī)、操作系統(tǒng)內(nèi)存泄漏和網(wǎng)絡(luò)遭受攻擊等不安全因素是保證數(shù)據(jù)庫(kù)安全不受威脅的基礎(chǔ)。
一 作為最流行的開源數(shù)據(jù)庫(kù)引擎,MySQL本身是非常安全的。即便如此,你仍然需要添加額外的安全層來(lái)保護(hù)你的MySQL數(shù)據(jù)庫(kù)不受攻擊,畢竟任何經(jīng)營(yíng)網(wǎng)上
在線業(yè)務(wù)的人都不想冒數(shù)據(jù)庫(kù)受到損壞的風(fēng)險(xiǎn)。接下來(lái),我們將介紹一些實(shí)用的辦法,你可以利用這些辦法來(lái)保護(hù)MySQL數(shù)據(jù)庫(kù),以便加強(qiáng)網(wǎng)站的安全性。
二 保護(hù)操作系統(tǒng)
確保操作系統(tǒng)的安全是保護(hù)數(shù)據(jù)庫(kù)安全的前提,因?yàn)槿绻麄€(gè)運(yùn)行環(huán)境不安全,那么網(wǎng)站上所有的東西都脆弱,很容易暴露于攻擊者。為了維護(hù)操作系統(tǒng)和MySQL服務(wù)器,你可以使用以下方法:
2.1 主機(jī)數(shù)據(jù)庫(kù)服務(wù)器和web服務(wù)器分別在不同的物理機(jī)器上,如果可能,在一個(gè)單獨(dú)的服務(wù)器上運(yùn)行數(shù)據(jù)庫(kù)服務(wù)器,以預(yù)防由其他應(yīng)用程序或服務(wù)的漏洞造成的服務(wù)器問(wèn)題。
安裝殺毒軟件,防火墻以及所有推薦的補(bǔ)丁和更新,防火墻能有效地把流量過(guò)濾到MySQL服務(wù)器。為了更好的提高安全性,你還可以實(shí)行入口封鎖。
禁用所有不必要的服務(wù),而且這樣的服務(wù)越少越好。
2.2 保護(hù)所有帳戶和密碼
攻擊者侵入MySQL數(shù)據(jù)庫(kù)最常見的一種方法是竊取有安全隱患的賬戶信息。為了降低出現(xiàn)這種風(fēng)險(xiǎn)的可能性,你不妨試一試下面的方法:
2.2.1. 給所有MySQL賬戶設(shè)置密碼
客戶程序并不是每次都能識(shí)別用戶,因此,如果用戶知道數(shù)據(jù)庫(kù)名但是沒有這個(gè)用戶名的密碼,那他可以指定任何其他用戶名連接到MySQL數(shù)據(jù)庫(kù)。讓每個(gè)MySQL用戶名都設(shè)置密碼,這樣一來(lái),要想利用匿名賬戶建立連接將會(huì)變得很困難。
2.2.2. 不要使用根用戶運(yùn)行MySQL服務(wù)器
在安裝MySQL的時(shí)候,默認(rèn)情況下創(chuàng)建了一個(gè)命名為“root”的管理用戶。每個(gè)人都知道這一點(diǎn),所以攻擊者通常試圖侵入這個(gè)“root”用戶來(lái)獲取訪問(wèn)權(quán)限。為了保障這個(gè)重要帳戶的安全,你需要給它重新命名,然后更改一個(gè)長(zhǎng)并且復(fù)雜的密碼。
2.2.3你可以在MySQL控制臺(tái)使用mysql RENAME USER root TO new_username;
指令給根用戶重命名,使用mysql SET PASSWORD FOR 'username'@'%hostname' =
PASSWORD('newpassword');//這是很重要的一條命令
指令來(lái)修改密碼。
三. 減少管理員賬戶
管理員賬戶越多,風(fēng)險(xiǎn)越大,所以你應(yīng)該保持盡可能最少的帳戶數(shù)量,只有為那些真正需要它的人創(chuàng)建賬戶。此外,記得要?jiǎng)h除未使用的和匿名的賬戶。如果你有很多管理員賬戶,那你需要定期檢查并清理那些不必要的賬戶。
四. 加強(qiáng)所有的密碼
除了管理員帳戶,你還需要加強(qiáng)所有其他用戶的密碼。你可以檢查所有的用戶名和密碼,必要的時(shí)候你還可以重置安全強(qiáng)度低的賬戶密碼。雖說(shuō)這樣做會(huì)有點(diǎn)費(fèi)時(shí),但卻是有必要的。
五 限制數(shù)據(jù)庫(kù)權(quán)限
每個(gè)用戶都應(yīng)該被授予適當(dāng)?shù)臋?quán)限以便數(shù)據(jù)庫(kù)能夠正常運(yùn)行,但這樣一來(lái)也加大了數(shù)據(jù)庫(kù)的安全隱患。就數(shù)據(jù)庫(kù)權(quán)限而言,我們有以下幾點(diǎn)建議:
5.1. 不要授予非管理員用戶文件/高級(jí)/程序權(quán)限
文件,高級(jí)和程序權(quán)限都不應(yīng)該被濫用。文件權(quán)限讓用戶可以在文件系統(tǒng)中的任何一個(gè)地方編寫文件,而程序權(quán)限讓用戶在任何時(shí)候都能夠查看服務(wù)器活動(dòng),終止客戶端連接甚至更改服務(wù)器操作。為了你的數(shù)據(jù)庫(kù)安全,這些權(quán)限只能授予給管理員賬戶。
5.2. 限制或禁用顯示數(shù)據(jù)庫(kù)權(quán)限
顯示數(shù)據(jù)庫(kù)特權(quán)可以用于收集數(shù)據(jù)庫(kù)信息,所以攻擊者通常利用它來(lái)竊取數(shù)據(jù)并準(zhǔn)備進(jìn)一步攻擊。你應(yīng)該把這個(gè)權(quán)限授予那些真正需要的人,或者直接禁用這個(gè)權(quán)
限,你只需要把skip-show-database添加到MySQL數(shù)據(jù)庫(kù)中的/etc/my.cnf配置文件中。對(duì)于Windows操作系統(tǒng)來(lái)說(shuō),則
需要添加到my.ini文件中。
5.3. 限制管理員和所有其他用戶的權(quán)限
即使是管理員,也不要在同一賬戶中授予所有權(quán)限。因此我們建議你最好降低管理員賬戶訪問(wèn)數(shù)據(jù)的權(quán)限。至于其他的用戶,你最好檢查所有他們擁有的權(quán)限,以確保一切都是合適的。
六 刪除風(fēng)險(xiǎn)組件
MySQL數(shù)據(jù)庫(kù)的默認(rèn)配置有一些不必要的組件,你可以考慮以下建議:
6.1. 禁用LOAD DATA LOCAL INFILE指令
這個(gè)命令允許用戶讀取本地文件甚至訪問(wèn)其他操作系統(tǒng)上的文件,這可能幫助攻擊者收集重要的信息并利用應(yīng)用程序的漏洞侵入你的數(shù)據(jù)庫(kù)。你需要做的是把set-variable=local-infile=0插入到MySQL數(shù)據(jù)庫(kù)的my.cnf文件中,來(lái)禁用這個(gè)指令。
6.2. 刪除測(cè)試數(shù)據(jù)庫(kù)
有一個(gè)默認(rèn)的“測(cè)試”數(shù)據(jù)庫(kù)用于測(cè)試目的。由于這個(gè)數(shù)據(jù)庫(kù)有安全風(fēng)險(xiǎn),匿名用戶也可以訪問(wèn),你應(yīng)該使用mysql DROP database test;指令盡快把它清除掉。
6.3. 刪除歷史文件
MySQL服務(wù)器有一個(gè)歷史文件,它可以幫助你在安裝出錯(cuò)的時(shí)候找到問(wèn)題所在。歷史文件包含敏感信息,比如說(shuō)密碼,如果這些信息被攻擊者獲得,那么將會(huì)給
你的數(shù)據(jù)庫(kù)帶來(lái)巨大的安全隱患。在安裝成功后,歷史文件并沒有什么用,因此你可以使用cat /dev/null
~/.mysql_history指令來(lái)刪除文件當(dāng)中的內(nèi)容。
七 限制遠(yuǎn)程訪問(wèn)MySQL服務(wù)器
對(duì)于大多數(shù)用戶來(lái)說(shuō),不需要通過(guò)不安全的開放網(wǎng)絡(luò)來(lái)訪問(wèn)MySQL服務(wù)器。你可以通過(guò)配置防火墻或硬件,或者迫使MySQL只聽從localhost來(lái)限制主機(jī)。此外,需要SSH隧道才能進(jìn)行遠(yuǎn)程訪問(wèn)。
八 如果你想僅僅從本地主機(jī)來(lái)限制用戶建立連接,你需要在在配置文件中添加bind-address=127.0.0.1。
8.1利用日志記錄
啟用日志記錄讓你可以檢測(cè)服務(wù)器上的活動(dòng),這樣你就可以分析失敗的登錄嘗試和敏感文件的訪問(wèn)記錄,以便了解是否存在向你的服務(wù)器和數(shù)據(jù)庫(kù)發(fā)起的惡意活動(dòng)。
你只需要把log =/var/log/mylogfile指令添加到MySQL配置文件中,就可以手動(dòng)啟用日志記錄功能。
8.2至于日志記錄,需要注意以下兩點(diǎn):
8.2.1日志記錄僅適用于查詢數(shù)量有限的數(shù)據(jù)庫(kù)服務(wù)器。對(duì)于信息量大的服務(wù)器,這可能會(huì)導(dǎo)致高過(guò)載。
8.2.2由于“hostname.err”文件包含敏感數(shù)據(jù)表名和密碼,只有“root”和“mysql”才有訪問(wèn)和記錄這個(gè)文件的權(quán)限。
本文題目:mysql怎么保證安全 mysql安全防護(hù)
分享網(wǎng)址:http://vcdvsql.cn/article16/hhpddg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、App開發(fā)、品牌網(wǎng)站設(shè)計(jì)、搜索引擎優(yōu)化、網(wǎng)站設(shè)計(jì)、Google
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)