MYSQL 網頁設計 技巧
為左確保數據庫平穩可靠運行,我地需進行維護和管理,呢個係每一位數據庫管理員既職責。下面分幾個專題分別介紹。
MySQL數據庫通過用戶和密碼來控制用戶對數據庫既訪問,當我地新安裝左一個數據庫伺服器時,MySQL既權限表設置係好唔安全,它默認允許任何人唔需要密碼就可訪問數據庫。所以我們安裝好伺服器後第一件需要做既就係設置用戶密碼。
在MySQL中既mysql數據庫的user數據表中存有用戶既帳號資訊,在初始狀態下已存在root和一些匿名用戶,且所有用戶都冇設置密碼。該數據表既呢d用戶資訊係通過一個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用戶有著同樣的權限,這是一個很大既安全漏洞。應該把它刪除或把權限削弱。
留言列表