MySQL用戶權限根據用戶的級別不同,權限級別也有所不同, 下面就為您介紹一些MySQL用戶權限相關方面的知識,希望可以讓您對MySQL用戶權限有更深的認識。
你可以授權不同級別的MySQL用戶權限,全局權限是最強大的,因為它們適用於任何數據庫。要使ethel成為可做任何事情的超級用戶,包括能授權給其它用戶,發出下列語句:
GRANT ALL ON *.* TO ethel@localhost IDENTIFIED BY "coffee" WITH GRANT OPTION
ON子句中的*.*意味著“所有數據庫、所有表”。從安全考慮,我們指定ethel只能從本地連接。限制一個超級用戶可以連接的主機通常是明智的,因為它限制了試圖破解口令的主機。
有些MySQL用戶權限FILE、PROCESS、RELOAD和SHUTDOWN)是管理權限並且只能用"ON *.*"全局權限指定符授權。如果你願意,你可以授權這些權限,而不授權數據庫權限。例如,下列語句設置一個flush用戶,他只能發出flush語句。 這可能在你需要執行諸如清空日志等的管理腳本中會有用:
GRANT RELOAD ON *.* TO flushl@localhost IDENTIFIED BY "flushpass"
一般地,你想授權管理MySQL用戶權限,吝啬點,因為擁有它們的用戶可以影響你的服務器的操作。
數據庫級權限適用於一個特定數據庫中的所有表,它們可通過使用ON db_name.*子句授予:
GRANT ALL ON samp_db TO [email protected] INDETIFIED BY "rock" GRANT Select ON samp_db TO ro_user@% INDETIFIED BY "rock"
第一條語句向bill授權samp_db數據庫中所有表的權限,第二條創建一個嚴格限制訪問的用戶ro_user只讀用戶),只能訪問samp_db數據庫中的所有表,但只有讀取,即用戶只能發出Select語句。
你可以列出一系列同時授予的各個MySQL用戶權限。例如,如果你想讓用戶能讀取並能修改現有數據庫的內容,但不能創建新表或刪除表,如下授予這些權限:
GRANT Select,Insert,Delete,Update ON samp_db TO [email protected] INDETIFIED BY "rock"
對於更精致的訪問控制,你可以在各個表上授權,或甚至在表的每個列上。當你想向用戶隱藏一個表的部分時,或你想讓一個用戶只能修改特定的列時,列特定權限非常有用。如:
GRANT Select ON samp_db.member TO bill@localhost INDETIFIED BY "rock"
GRANT Update (expiration) ON samp_db. member TO bill@localhost
第一條語句授予對整個member表的讀權限並設置了一個口令,第二條語句增加了Update權限,當只對expiration列。沒必要再指定口令,因為第一條語句已經指定了。
如果你想對多個列授予權限,指定一個用逗號分開的列表。例如,對assistant用戶增加member表的地址字段的Update權限,使用如下語句,新權限將加到用戶已有的權限中:
GRANT Update (street,city,state,zip) ON samp_db TO assistant@localhost
MySQL用戶權限設置方法
使用MySQL命令行備份及恢復數據庫
MySQL重復記錄的處理方法
教您如何MySql查詢時間段
用MySQL臨時表加速查詢