程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> 更多數據庫知識 >> MYSQL教程:數據庫安全管理

MYSQL教程:數據庫安全管理

編輯:更多數據庫知識

為了確保數據庫平穩可靠運行,我們需進行維護和管理,這是每一位數據庫管理員的職責。下面分幾個專題分別介紹。

數據庫安全管理

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved