最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL 角色(role)功能介紹

 更新時間:2021年04月23日 11:11:20   作者:MySQL技術  
這篇文章主要介紹了MySQL 角色(role)功能的相關資料,幫助大家更好的理解和學習使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下

前言:

上篇文章,我們介紹了 MySQL 權限管理相關知識。當數(shù)據(jù)庫實例中存在大量的庫或用戶時,權限管理將會變得越來越繁瑣,可能要頻繁進行權限變更。MySQL 8.0 新增了 role 功能,使得權限管理更加方便,本篇文章我們來看下 8.0 下的 role 功能。

  1. role 簡介

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

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

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

# 創(chuàng)建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`@`%` |
+-------------------------------------------+

# 創(chuàng)建用戶 并賦予角色權限
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)

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

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

# 使用 set default role 命令激活角色
mysql> SET DEFAULT ROLE ALL TO dev1;
Query OK, 0 rows affected (0.77 sec)

# 重新登錄 發(fā)現(xiàn)權限正常
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 命令激活角色外,還可以修改系統(tǒng)變量 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)

# 啟用該變量 先動態(tài)啟用 之后可以將此參數(shù)加入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 相關操作

上面我們介紹了創(chuàng)建角色及給用戶授予角色權限,關于 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 變量來配置強制性角色。使用強制性角色,服務器會為全部的用戶戶默認賦予該角色,而不需要顯示執(zhí)行授予角色??梢允褂?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 變量,才可以自動激活角色。
  • 一個用戶可以擁有多個角色,一個角色也可以授予多個用戶。
  • 角色權限變化會應用到對應用戶。
  • 刪除角色,則擁有此角色的用戶也會喪失此角色的權限。
  • 可設置強制性角色,使得所有用戶都擁有此角色的權限。
  • 角色管理和用戶管理相似,只是角色不能用于登錄數(shù)據(jù)庫。

以上就是MySQL 角色(role)功能介紹的詳細內容,更多關于MySQL 角色(role)功能的資料請關注腳本之家其它相關文章!

相關文章

  • mysql中l(wèi)imit的用法深入分析

    mysql中l(wèi)imit的用法深入分析

    本篇文章是對mysql中l(wèi)imit的用法進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06
  • mysql父子集查詢(根據(jù)父級查詢所有子集)

    mysql父子集查詢(根據(jù)父級查詢所有子集)

    某些場景可能需要維護一些有父子關系的數(shù)據(jù),本文主要介紹了mysql父子集查詢(根據(jù)父級查詢所有子集),具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • Druid數(shù)據(jù)庫連接池的jar包的使用方式

    Druid數(shù)據(jù)庫連接池的jar包的使用方式

    這篇文章主要介紹了Druid數(shù)據(jù)庫連接池的jar包的使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • 深入了解MySQL中的慢查詢日志

    深入了解MySQL中的慢查詢日志

    什么是MySQL慢查詢呢?其實就是查詢的SQL語句耗費較長的時間。具體耗費多久算慢查詢呢?這其實因人而異,有些公司慢查詢的閾值是100ms,有些的閾值可能是500ms。本文將通過示例和大家聊聊慢查詢的危害和常用場景,感興趣的可以了解一下
    2023-03-03
  • 兩個MySql服務的應用

    兩個MySql服務的應用

    兩個MySql服務的應用兼容方法。
    2009-10-10
  • MySQL數(shù)據(jù)庫主從同步實戰(zhàn)過程詳解

    MySQL數(shù)據(jù)庫主從同步實戰(zhàn)過程詳解

    這篇文章主要介紹了MySQL數(shù)據(jù)庫主從同步,結合實例形式詳細分析了MySQL數(shù)據(jù)庫主從同步基本配置方法與操作注意事項,需要的朋友可以參考下
    2020-05-05
  • MySQL中SELECT+UPDATE處理并發(fā)更新問題解決方案分享

    MySQL中SELECT+UPDATE處理并發(fā)更新問題解決方案分享

    這篇文章主要介紹了MySQL中SELECT+UPDATE處理并發(fā)更新問題解決方案分享,需要的朋友可以參考下
    2014-05-05
  • MySQL單表恢復的步驟

    MySQL單表恢復的步驟

    這篇文章主要介紹了MySQL單表恢復的步驟,幫助大家更好的理解和學習MySQL,感興趣的朋友可以了解下
    2020-08-08
  • Qt如何編譯MySQL數(shù)據(jù)庫驅動

    Qt如何編譯MySQL數(shù)據(jù)庫驅動

    這篇文章主要介紹了Qt如何編譯MySQL數(shù)據(jù)庫驅動,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-12-12
  • MySQL數(shù)據(jù)實時同步到MongoDB的實踐分享

    MySQL數(shù)據(jù)實時同步到MongoDB的實踐分享

    很多 DBA 同學經常會遇到要從一個數(shù)據(jù)庫實時同步到另一個數(shù)據(jù)庫的問題,同構數(shù)據(jù)還相對容易,遇上異構數(shù)據(jù)、表多、數(shù)據(jù)量大等情況就難以同步,我自己親測了一種方式可以實現(xiàn)MySQL數(shù)據(jù)實時同步到MongoDB,跟大家分享一下,希望對你有幫助
    2024-01-01

最新評論

漳州市| 天长市| 什邡市| 古浪县| 兰坪| 贞丰县| 班戈县| 通山县| 井陉县| 饶河县| 定陶县| 新竹市| 闸北区| 新丰县| 桐梓县| 布尔津县| 宁夏| 汨罗市| 汉川市| 十堰市| 桐庐县| 鄂伦春自治旗| 睢宁县| 富蕴县| 修文县| 凌云县| 莆田市| 连云港市| 额尔古纳市| 长垣县| 突泉县| 英德市| 泰兴市| 绥江县| 宜城市| 景宁| 神木县| 永吉县| 黄梅县| 城口县| 呼伦贝尔市|