中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL角色功能有哪些

發布時間:2021-10-09 17:11:22 來源:億速云 閱讀:135 作者:iii 欄目:數據庫

本篇內容介紹了“MySQL角色功能有哪些”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

MySQL角色功能有哪些

1. role 簡介

role 角色功能對于 Oracle 數據庫來說不算是什么特殊,在 Oracle 中經常被用到。MySQL 8.0 版本終于新增了 role  功能,為數據庫用戶權限管理提供了一種新思路。

role 可以看做一個權限的集合,這個集合有一個統一的名字 role 名。可以給多個數據庫用戶授予同個 role 的權限,權限變更可直接通過修改 role  來實現,不需要每個用戶一個一個的去變更,方便運維和管理。role 可以創建、刪除、修改并作用到它管理的用戶上。

下面我們具體來體驗下 role 角色功能:

# 創建role mysql> create role 'dev_role'; Query OK, 0 rows affected (0.15 sec)  # 給role授予權限 mysql> grant select on db1.* to 'dev_role'@'%'; Query OK, 0 rows affected (0.12 sec)  # 查看role的權限 mysql> show grants for 'dev_role'@'%'; +-------------------------------------------+ | Grants for dev_role@%                     | +-------------------------------------------+ | GRANT USAGE ON *.* TO `dev_role`@`%`      | | GRANT SELECT ON `db1`.* TO `dev_role`@`%` | +-------------------------------------------+  # 創建用戶 并賦予角色權限 mysql> create user 'dev1'@'%' identified by '123456'; Query OK, 0 rows affected (0.68 sec)  mysql> grant 'dev_role' to 'dev1'@'%'; Query OK, 0 rows affected (0.38 sec)  # 查看用戶權限 mysql> show grants for 'dev1'@'%'; +------------------------------------+ | Grants for dev1@%                  | +------------------------------------+ | GRANT USAGE ON *.* TO `dev1`@`%`   | | GRANT `dev_role`@`%` TO `dev1`@`%` | +------------------------------------+ 2 rows in set (0.63 sec)  # 使用dev1用戶登錄 root@localhost ~]# mysql -udev1 -p123456  mysql> show databases; +--------------------+ | Database           | +--------------------+ | information_schema | +--------------------+ 1 row in set (0.34 sec)  mysql> select CURRENT_ROLE(); +----------------+ | CURRENT_ROLE() | +----------------+ | NONE           | +----------------+ 1 row in set (0.59 sec)

什么情況?貌似和我們想象不同,賦予用戶某個角色權限后,該用戶并沒有獲得相應權限。

出現上述情況的原因是,在用戶會話中,授予該用戶的角色處于非活動狀態。只有授予的角色在會話中處于活動狀態時,該用戶才擁有此角色的權限,要確定當前會話中哪些角色處于活動狀態,可以使用  CURRENT_ROLE() 函數。

# 使用 set default role 命令激活角色 mysql> SET DEFAULT ROLE ALL TO dev1; Query OK, 0 rows affected (0.77 sec)  # 重新登錄 發現權限正常 root@localhost ~]# mysql -udev1 -p123456  mysql> select CURRENT_ROLE(); +----------------+ | CURRENT_ROLE() | +----------------+ | `dev_role`@`%` | +----------------+ 1 row in set (0.57 sec)  mysql> show databases; +--------------------+ | Database           | +--------------------+ | db1                | | information_schema | +--------------------+ 2 rows in set (1.05 sec)

除了使用 set default role 命令激活角色外,還可以修改系統變量 activate_all_roles_on_login  ,該變量決定是否自動激活 role ,默認為 OFF 即不自動激活,建議將該變量改為 ON ,這樣以后賦予角色給新用戶后就不需要再手動激活了。

# 查看 activate_all_roles_on_login 變量 mysql> show variables like 'activate_all_roles_on_login'; +-----------------------------+-------+ | Variable_name               | Value | +-----------------------------+-------+ | activate_all_roles_on_login | OFF   | +-----------------------------+-------+ 1 row in set (1.53 sec)  # 啟用該變量 先動態啟用 之后可以將此參數加入my.cnf配置文件中 mysql> set global activate_all_roles_on_login = on; Query OK, 0 rows affected (0.50 sec)  # 之后角色就會自動激活 mysql> create user 'dev2'@'%' identified by '123456'; Query OK, 0 rows affected (0.68 sec)  mysql> grant 'dev_role' to 'dev2'@'%'; Query OK, 0 rows affected (0.38 sec)  root@localhost ~]# mysql -udev2 -p123456  mysql> select CURRENT_ROLE(); +----------------+ | CURRENT_ROLE() | +----------------+ | `dev_role`@`%` | +----------------+ 1 row in set (0.57 sec)  mysql> show databases; +--------------------+ | Database           | +--------------------+ | db1                | | information_schema | +--------------------+ 2 rows in set (1.05 sec)

2. role 相關操作

上面我們介紹了創建角色及給用戶授予角色權限,關于 role 相關操作還有很多,我們接著來看下。

# 變更角色權限 mysql> grant select on db2.* to 'dev_role'@'%'; Query OK, 0 rows affected (0.33 sec)  # 擁有該角色的用戶 重新登錄后權限也會對應變化 root@localhost ~]# mysql -udev1 -p123456  mysql> show databases; +--------------------+ | Database           | +--------------------+ | db1                | | db2                | | information_schema | +--------------------+ 3 rows in set (2.01 sec)  # 回收角色權限 mysql> revoke SELECT ON db2.* from 'dev_role'@'%'; Query OK, 0 rows affected (0.31 sec)  # 撤銷用戶的角色 mysql> revoke 'dev_role'@'%' from 'dev1'@'%'; Query OK, 0 rows affected (0.72 sec)  mysql> show grants for 'dev1'@'%'; +----------------------------------+ | Grants for dev1@%                | +----------------------------------+ | GRANT USAGE ON *.* TO `dev1`@`%` | +----------------------------------+ 1 row in set (1.06 sec)  # 刪除角色 (刪除角色后 對應的用戶也會失去該角色的權限) mysql> drop role dev_role; Query OK, 0 rows affected (0.89 sec)

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

# my.cnf 配置 [mysqld] mandatory_roles='dev_role'  # set 更改變量 SET PERSIST mandatory_roles = 'dev_role';

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

總結:

關于 role 角色相關知識,簡單總結幾點如下:

  • role 是一個權限的集合,可以被賦予不同權限。

  • 開啟 activate_all_roles_on_login 變量,才可以自動激活角色。

  • 一個用戶可以擁有多個角色,一個角色也可以授予多個用戶。

  • 角色權限變化會應用到對應用戶。

  • 刪除角色,則擁有此角色的用戶也會喪失此角色的權限。

  • 可設置強制性角色,使得所有用戶都擁有此角色的權限。

  • 角色管理和用戶管理相似,只是角色不能用于登錄數據庫。

“MySQL角色功能有哪些”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

轮台县| 宁乡县| 柳河县| 闽侯县| 依兰县| 和平区| 新兴县| 余江县| 白河县| 修水县| 阆中市| 永平县| 铁岭县| 嘉兴市| 闽清县| 牟定县| 宁夏| 潜江市| 随州市| 河源市| 宜良县| 青海省| 喜德县| 阳西县| 治县。| 乌什县| 景泰县| 枣阳市| 兴文县| 揭东县| 青浦区| 新疆| 基隆市| 海安县| 来安县| 河池市| 台北县| 微山县| 繁峙县| 大厂| 荣成市|