MySQL中的授權(grant)操作可以給用戶或者角色賦予特定的權限,這樣用戶或者角色就可以在數據庫中執行相應的操作。其中,身份(iden)也是授權操作中非常重要的一個概念。
在MySQL中,身份包括用戶和角色。用戶是指可以直接登錄MySQL系統并訪問數據庫的賬戶;而角色則是一種權限集合,可以賦予多個用戶相同的權限。
授權的語法一般如下所示:
GRANT privilege_type [(column_list)] [, privilege_type [(column_list)]] ... ON [object_type] object_name TO user_or_role [, user_or_role] ... [WITH GRANT OPTION];
其中,grant后面的privilege_type指定了授權的權限類型,包括SELECT、INSERT、UPDATE、DELETE等多種。如果授權的是某個表的某些列,則需要給出column_list。而object_type則指定了授權的對象類型,包括TABLE、VIEW、PROCEDURE等;而object_name則指定了具體的對象名稱。TO關鍵字后面緊跟的是被授權的用戶或者角色名稱,可以同時授權給多個用戶或角色。
如需撤銷授權,則可以使用REVOKE語句,其語法如下:
REVOKE privilege_type [(column_list)] [, privilege_type [(column_list)]] ... ON [object_type] object_name FROM user_or_role [, user_or_role] ...;
需要注意的是,對于角色身份的授權,在授權時需要使用CREATE ROLE語句創建角色,而在授權時使用GRANT語句將權限授予給角色;而在授權給用戶時,則是直接使用GRANT語句授予。