推薦學習:
mysql資料庫的許可權的管理,單純的給某一個使用者直接加許可權。這樣做有個比較麻煩的地方,就是我們的使用者比較多的時候如果這些使用者的許可權還都是一樣的那麼操作起來未免顯得有些冗餘。那麼我們可以通過角色來實現給使用者授予許可權。
引入角色的目的是 方便管理擁有相同許可權的使用者 。恰當的許可權設定,可以確保資料的安全性,這是至關 重要的
建立角色使用 CREATE ROLE 語句,語法如下:
CREATE ROLE 'role_name'[@'host_name'] [,'role_name'[@'host_name']]...
角色名稱的命名規則和使用者名稱類似。如果 host_name省略,預設為% , role_name不可省略 ,不可為 空。
練習:我們現在需要建立一個經理的角色,就可以用下面的程式碼:
CREATE ROLE 'manager'@'localhost';
效果如下圖
建立角色之後,預設這個角色是沒有任何許可權的,我們需要給角色授權。給角色授權的語法結構是:
GRANT privileges ON table_name TO 'role_name'[@'host_name'];
例子:為manager角色授予檢視dbtest1資料庫下所有表的許可權
只要你建立了一個角色,系統就會自動給你一個「 USAGE 」許可權,意思是 連線登入資料庫的許可權
角色授權後,可以對角色的許可權進行維護,對許可權進行新增或復原。新增許可權使用GRANT語句,與角色 授權相同。復原角色或角色許可權使用REVOKE語句。
修改了角色的許可權,會影響擁有該角色的賬戶的許可權。
復原角色許可權的SQL語法如下
REVOKE privileges ON tablename FROM 'rolename';
現在我們給manager在加一個delete的許可權,然後把這個許可權再收回
當我們需要對業務重新整合的時候,可能就需要對之前建立的角色進行清理,刪除一些不會再使用的角 色。刪除角色的操作很簡單,你只要掌握語法結構就行了。
DROP ROLE role [,role2]...
注意, 如果你刪除了角色,那麼使用者也就失去了通過這個角色所獲得的所有許可權 。
角色建立並授權後,要賦給使用者並處於 啟用狀態 才能發揮作用。給使用者新增角色可使用GRANT語句,語 法形式如下:
GRANT role [,role2,...] TO user [,user2,...];
在上述語句中,role代表角色,user代表使用者。可將多個角色同時賦予多個使用者,用逗號隔開即可。
例子:建立一個使用者叫wang5 然後賦予角色manager,操作如下
用wang5登入並操作
賦予wang5角色manager 注意這個是通過root使用者實現的
然後通過wang5登入檢視資料庫
此時還是看不到dbtest1,這是怎麼回事呢?原來我們需要啟用角色
方式1:使用set default role 命令啟用角色
SET DEFAULT ROLE ALL TO 'kangshifu'@'localhost';
現在啟用manager角色
然後再通過wang5使用者登入檢視
啟用方式2:將activate_all_roles_on_login設定為ON
預設情況:
設定 SET GLOBAL activate_all_roles_on_login=ON;
這條 SQL 語句的意思是,對 所有角色永久啟用 。執行這條語句之後,使用者才真正擁有了賦予角色的所有 許可權。
那麼現在wang5已經被賦予manager角色,我們知道manager角色只是有select的許可權。我們做如下操作
REVOKE role FROM user;
比如復原 wang5的manager角色,通過root使用者
再通過wang5登入看效果
推薦學習:
以上就是mysql資料庫角色的範例詳解的詳細內容,更多請關注TW511.COM其它相關文章!