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

數據庫安全管理

編輯:關於MYSQL數據庫

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

數據庫安全管理
MySQL數據庫通過用戶和密碼來控制用戶對數據庫的訪問,當我們新安裝了一個數據庫服務器時,MySQL的權限表設置是很不安全,它默認允許任何人不需要密碼就可訪問數據庫。所以我們安裝好服務器後第一件需要做的就是設置用戶密碼。

在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