數(shù)據(jù)庫(kù)安全管理
MySQL數(shù)據(jù)庫(kù)通過(guò)用戶和密碼來(lái)控制用戶對(duì)數(shù)據(jù)庫(kù)的訪問(wèn),當(dāng)我們新安裝了一個(gè)數(shù)據(jù)庫(kù)服務(wù)器時(shí),MySQL的權(quán)限表設(shè)置是很不安全,它默認(rèn)允許任何人不需要密碼就可訪問(wèn)數(shù)據(jù)庫(kù)。所以我們安裝好服務(wù)器后第一件需要做的就是設(shè)置用戶密碼。
在MySQL中的mysql數(shù)據(jù)庫(kù)的user數(shù)據(jù)表中存有用戶的帳號(hào)信息,在初始狀態(tài)下已存在root和一些匿名用戶,且所有用戶都沒(méi)有設(shè)置密碼。該數(shù)據(jù)表的這些用戶信息是通過(guò)一個(gè)mysql_install_db腳本安裝的。該表的主要列有:
User,連接數(shù)據(jù)庫(kù)的用戶名。
Host,允許連接到數(shù)據(jù)庫(kù)服務(wù)器的主機(jī)名,“%”通配符代表所有主機(jī)。
Password,連接密碼,已加密。
其它權(quán)限列,以“Y”或“N”標(biāo)識(shí)是否有效。
在這種狀態(tài)下的數(shù)據(jù)庫(kù)是極不安全的,我們可用以下命令輕易地訪問(wèn)數(shù)據(jù)庫(kù):
% mysql -h localhost -u root #通過(guò)本地主機(jī),root用戶訪問(wèn),不需要密碼驗(yàn)證
% mysql -h localhost #通過(guò)本地主機(jī),匿名用戶訪問(wèn),不需要密碼驗(yàn)證
設(shè)置MySQL用戶帳號(hào)密碼的方法有三種:
使用mysqladmin程序:
% mysqladmin -h localhost -u root password "password" #設(shè)置在本地以root身分登錄的密碼
% mysqladmin -h remote -u root password "password" #設(shè)置遠(yuǎn)程主機(jī)以root身分登錄的密碼
在初始設(shè)置時(shí),這兩條語(yǔ)句都要運(yùn)行,以確保數(shù)據(jù)庫(kù)本地訪問(wèn)和網(wǎng)絡(luò)訪問(wèn)的安全。
通過(guò)set password這條SQL語(yǔ)句設(shè)置:
mysql> set password for 'root'@'localhost' = password('password');
mysql> set password for 'root'@'remote' = password('password');
直接修改user權(quán)限表:
mysql> use mysql;
mysql> update user set password=password('password') where user='root';
mysql> flush privileges; #重載權(quán)限表,使修改馬上生效
MySQL使用駐留在內(nèi)存中的權(quán)限表拷貝來(lái)進(jìn)行訪問(wèn)控制,當(dāng)使用mysqladmin和set password設(shè)置密碼,MySQL會(huì)監(jiān)察到權(quán)限表已被修改,它自動(dòng)重載該表。而用update的方式,MySQL就監(jiān)察不到變化,需手動(dòng)用flush privileges命令刷新內(nèi)存中的權(quán)限表,以使它馬上生效。
為root用戶設(shè)置密碼后,如果需以root身份連接數(shù)據(jù)庫(kù),就需驗(yàn)證密碼。我們可用以下語(yǔ)句連接數(shù)據(jù)庫(kù):
% mysql -u root -p
Enter password: #輸入root的密碼
在user表中,user列為空的為匿名用戶。它也是沒(méi)有密碼的,我們需為它們?cè)O(shè)置一個(gè)密碼,或干脆把它們刪除。在windows系統(tǒng)上的本地匿名用戶帳號(hào)和root用戶有著同樣的權(quán)限,這是一個(gè)很大的安全漏洞。應(yīng)該把它刪除或把權(quán)限削弱。
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com