為了確保數據庫平穩可靠運行,我們需進行維護和管理,這是每一位數據庫管理員的職責。下面分幾個專題分別介紹。
MySQL數據庫通過用戶和密碼來控制用戶對數據庫的訪問,當我們新安裝了一個數據庫服務器時,MySQL的權限表設置是很不安全,它默認允許任何人不需要密碼就可訪問數據庫。所以我們安裝好服務器後第一件需要做的就是設置用戶密碼。
本文由網頁教學網(http://www.webjx.com)整理發布!轉載請注明出處,謝謝!
在MySQL中的mysql數據庫的user數據表中存有用戶的帳號信息,在初始狀態下已存在root和一些匿名用戶,且所有用戶都沒有設置密碼。該數據表的這些用戶信息是通過一個mysql_install_db腳本安裝的。該表的主要列有:
User,連接數據庫的用戶名。
Host,允許連接到數據庫服務器的主機名,“%”通配符代表所有主機。
Password,連接密碼,已加密。
其它權限列,以“Y”或“N”標識是否有效。
在這種狀態下的數據庫是極不安全的,我們可用以下命令輕易地訪問數據庫:
% mysql -h localhost -u root #通過本地主機,root用戶訪問,不需要密碼驗證 % mysql -h localhost #通過本地主機,匿名用戶訪問,不需要密碼驗證
設置MySQL用戶帳號密碼的方法有三種:
使用mysqladmin程序:
% mysqladmin -h localhost -u root password "password" #設置在本地以root身分登錄的密碼 % mysqladmin -h remote -u root password "password" #設置遠程主機以root身分登錄的密碼
在初始設置時,這兩條語句都要運行,以確保數據庫本地訪問和網絡訪問的安全。
通過set password這條SQL語句設置:
mysql> set password for 'root'@'localhost' = password('password'); mysql> set password for 'root'@'remote' = password('password');
直接修改user權限表:
mysql> use mysql; mysql> update user set password=password('password') where user='root'; mysql> flush privileges; #重載權限表,使修改馬上生效
MySQL使用駐留在內存中的權限表拷貝來進行訪問控制,當使用mysqladmin和set password設置密碼,MySQL會監察到權限表已被修改,它自動重載該表。而用update的方式,MySQL就監察不到變化,需手動用flush privileges命令刷新內存中的權限表,以使它馬上生效。
為root用戶設置密碼後,如果需以root身份連接數據庫,就需驗證密碼。我們可用以下語句連接數據庫:
% mysql -u root -p Enter password: #輸入root的密碼
在user表中,user列為空的為匿名用戶。它也是沒有密碼的,我們需為它們設置一個密碼,或干脆把它們刪除。在windows系統上的本地匿名用戶帳號和root用戶有著同樣的權限,這是一個很大的安全漏洞。應該把它刪除或把權限削弱。