欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL數(shù)據(jù)庫(kù)安全配置介紹第2/2頁(yè)

 更新時(shí)間:2011年03月06日 16:24:43   作者:  
MySQL數(shù)據(jù)庫(kù)所在的主機(jī)的安全性是最首要的問(wèn)題,如果主機(jī)不安全,被攻擊者控制,那么MySQL的安全性也無(wú)從談起。其次就是數(shù)據(jù)目錄和數(shù)據(jù)文件的安全性,也就是權(quán)限設(shè)置問(wèn)題。因此MySQL數(shù)據(jù)庫(kù)安全配置是至關(guān)重要的。

3、外部網(wǎng)絡(luò)安全

MySQL數(shù)據(jù)庫(kù)安裝好以后,Unix平臺(tái)的user表是這樣的:

mysql> use mysql;

Database changed

mysql> select Host,User,Password,Select_priv,Grant_priv from user;

4 rows in set (0.00 sec)

Windows平臺(tái)的user表是這樣的:

mysql> use mysql;

Database changed

mysql> select Host,User,Password,Select_priv,Grant_priv from user;

4 rows in set (0.00 sec)

我們先來(lái)看Unix平臺(tái)的user表。其中redhat只是我試驗(yàn)機(jī)的機(jī)器名,所以實(shí)際上Unix平臺(tái)的MySQL默認(rèn)只允許本機(jī)才能連接數(shù)據(jù)庫(kù)。但是缺省root用戶口令是空,所以當(dāng)務(wù)之急是給root用戶加上口令。給數(shù)據(jù)庫(kù)用戶加口令有三種方法:

1)在shell提示符下用mysqladmin命令來(lái)改root用戶口令:

shell>mysqladmin -uroot password test

這樣,MySQL數(shù)據(jù)庫(kù)root用戶的口令就被改成test了。(test只是舉例,我們實(shí)際使用的口令一定不能使用這種易猜的弱口令)

2)用set password修改口令:

mysql> set password for root@localhost=password('test');

這時(shí)root用戶的口令就被改成test了。

3)直接修改user表的root用戶口令:

mysql> use mysql;

mysql> update user set password=password('test') where user='root';

mysql> flush privileges;

這樣,MySQL數(shù)據(jù)庫(kù)root用戶的口令也被改成test了。其中最后一句命令flush privileges的意思是強(qiáng)制刷新內(nèi)存授權(quán)表,否則用的還是緩沖中的口令,這時(shí)非法用戶還可以用root用戶及空口令登陸,直到重啟MySQL服務(wù)器。

我們還看到user為空的匿名用戶,雖然它在Unix平臺(tái)下沒(méi)什么權(quán)限,但為了安全起見(jiàn)我們應(yīng)該刪除它:

mysql> delete from user where user='';

Windows版本MySQL的user表有很大不同,我們看到Host字段除了localhost還有是%。這里%的意思是允許任意的主機(jī)連接MySQL服務(wù)器,這是非常不安全的,給攻擊者造成可乘之機(jī),我們必須刪除Host字段為%的記錄:

4、一些小竅門

1)如果不慎忘記了MySQL的root密碼,我們可以在啟動(dòng)MySQL服務(wù)器時(shí)加上參數(shù)--skip-grant-tables來(lái)跳過(guò)授權(quán)表的驗(yàn)證 (./safe_mysqld --skip-grant-tables &),這樣我們就可以直接登陸MySQL服務(wù)器,然后再修改root用戶的口令,重啟MySQL就可以用新口令登陸了。

2)啟動(dòng)MySQL服務(wù)器時(shí)加--skip-show-database使一般數(shù)據(jù)庫(kù)用戶不能瀏覽其它數(shù)據(jù)庫(kù)。

3)啟動(dòng)MySQL服務(wù)器時(shí)加上--chroot=path參數(shù),讓mysqld守護(hù)進(jìn)程運(yùn)行在chroot環(huán)境中。這樣SQL語(yǔ)句LOAD DATA INFILE和SELECT ... INTO OUTFILE就限定在chroot_path下讀寫文件了。這里有一點(diǎn)要注意,MySQL啟動(dòng)后會(huì)建立一個(gè)mysql.sock文件,默認(rèn)是在/tmp目錄下。使用了chroot后,MySQL會(huì)在chroot_path/tmp去建立mysql.sock文件,如果沒(méi)有chroot_path/tmp目錄或啟動(dòng)MySQL的用戶沒(méi)有這個(gè)目錄寫權(quán)限就不能建立mysql.sock文件,MySQL會(huì)啟動(dòng)失敗。比如我們加了--chroot=/usr/local/mysql/啟動(dòng)參數(shù),那么最好建立一個(gè)啟動(dòng)MySQL的用戶能寫的/usr/local/mysql/tmp目錄,當(dāng)然我們也可以用--socket=path來(lái)指定mysql.sock文件的路徑,但這個(gè)path一定要在chroot_path里面。

4)啟動(dòng)MySQL服務(wù)器時(shí)加上--log-slow-queries=file參數(shù),這樣mysqld會(huì)把SQL命令執(zhí)行時(shí)間超過(guò)long_query_time的寫入file文件。如果沒(méi)有指定=file,mysqld默認(rèn)會(huì)寫到數(shù)據(jù)目錄下的hostname-slow.log。如果只指定了filename,沒(méi)有指定路徑,那么mysqld也會(huì)把filename寫到數(shù)據(jù)目錄下。我們通過(guò)這個(gè)日志文件可以找出執(zhí)行時(shí)間超長(zhǎng)的查詢語(yǔ)句,然后盡可能的優(yōu)化它減輕MySQL服務(wù)器的負(fù)擔(dān)。

5)如果我們只需本機(jī)使用MySQL服務(wù),那么我們還可以加上--skip-networking啟動(dòng)參數(shù)使MySQL不監(jiān)聽(tīng)任何TCP/IP連接,增加安全性。(非常推薦)

6)MySQL的更多mysqld啟動(dòng)選項(xiàng)請(qǐng)見(jiàn)MySQL手冊(cè)4.16.4 mysqld Command-line Options

References

MySQL Manual(http://www.mysql.com/documentation/index.html)

晏子的MySQL管理員指南(http://clyan.hongnet.com/index.html)

Access Granted(http://www.devshed.com/Server_Side/MySQL/Access)

相關(guān)文章

最新評(píng)論