MySQL8.0功能詳解-角色【轉】


角色功能對於Oracle的DBA來說,不是什么特殊功能,但對於MySQL而言,這是一個人心所盼的功能。

MySQL的DBA現在可以創建角色、對其賦予權限,並將它們授予用戶。使用角色可以大量減輕DBA的工作,可以輕松管理每個團隊、用戶的各種復雜的權限。

下面詳細介紹一下MySQL中如何使用角色:

創建刪除角色:

創建角色使用 “CREATE ROLE”語句,假設我們為應用程序創建只讀角色、讀寫角色和開發人員角色。

 

 

角色的名稱與MySQL的賬戶名稱非常相似,由用戶名+主機名稱構成,如果省略主機名稱則默認為'%'。

刪除角色使用:

 

 

賦予/撤銷權限:

角色創建以后,需要對其賦予相應的權限。使用下列語句分別對角色賦予全部權限、只讀權限和讀寫權限:

 

 

賦予角色權限后,將相應的角色授予用戶。例如:

創建用戶

 

 

授予角色權限

 

 

撤銷用戶的角色和撤銷角色的權限:

 

 

 

查看角色的權限:

當角色授予用戶后,我們可以查看用戶擁有的權限,執行:

 

 

是否注意到,執行show grants語句只是看到了用戶被賦予了角色,該角色具有哪些權限該如何查看呢?執行下面的語句可以確認相關內容:

 

 

 

強制性角色:

MySQL可以通過mandatory_roles 變量來配置強制性角色。使用強制性角色,服務器會為全部的賬戶默認賦予該角色,而不需要顯示執行賦予角色。可以使用my.cnf文件或者使用SET PERSIST進行配置,例如:

[mysqld]

mandatory_roles='role1,role2@localhost'

 

SET PERSIST mandatory_roles = 'role1,role2@localhost;

需要注意的是,配置在mandatory_roles中的角色不能撤銷其權限,也不能刪除。

角色自動激活:

賦予用戶帳戶的角色在帳戶會話中可以處於活動狀態,也可以處於非活動狀態。如果賦予的角色在會話中處於活動狀態,則具有相應的權限,反之則沒有。要確定當前會話中哪些角色處於活動狀態,使用CURRENT_ROLE()函數。

 

 

默認情況下,向帳戶賦予角色或在mandatory_roles系統變量值中為其命名后,該角色在帳戶會話中不會變為活動狀態。要指定每次用戶連接到服務器,進行身份驗證時激活角色,請使用 SET DEFAULT ROLE:

 

 

之后,用app_dev_user登陸服務器,查看當前角色權限:

 

 

要在用戶連接到服務器時,使所有顯式賦予的角色和強制角色自動激活,請啟用activate_all_roles_on_login 系統變量。默認情況下,禁用自動角色激活。

 

關於MySQL中使用角色就介紹到這里,更為詳盡的內容請訪問官網手冊

https://dev.mysql.com/doc/refman/8.0/en/roles.html

 

轉自

MySQL8功能詳解——角色 https://mp.weixin.qq.com/s/2kCC7Ab95sJhnIApnTG9vw


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM