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用戶有著同樣的權限,這是一個很大既安全漏洞。應該把它刪除或把權限削弱。

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 dettori 的頭像
    dettori

    Web Design

    dettori 發表在 痞客邦 留言(0) 人氣()