五月综合激情婷婷六月,日韩欧美国产一区不卡,他扒开我内裤强吻我下面视频 ,无套内射无矿码免费看黄,天天躁,日日躁,狠狠躁

新聞動(dòng)態(tài)

MySQL 角色(role)功能介紹

發(fā)布日期:2022-02-14 09:56 | 文章來(lái)源:gibhub

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

1. role 簡(jiǎn)介

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

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

下面我們具體來(lái)體驗(yàn)下 role 角色功能:

#創(chuàng)建role
mysql>createrole'dev_role';
QueryOK,0rowsaffected(0.15sec)
#給role授予權(quán)限
mysql>grantselectondb1.*to'dev_role'@'%';
QueryOK,0rowsaffected(0.12sec)
#查看role的權(quán)限
mysql>showgrantsfor'dev_role'@'%';
+-------------------------------------------+
|Grantsfordev_role@%|
+-------------------------------------------+
|GRANTUSAGEON*.*TO`dev_role`@`%`|
|GRANTSELECTON`db1`.*TO`dev_role`@`%`|
+-------------------------------------------+
#創(chuàng)建用戶并賦予角色權(quán)限
mysql>createuser'dev1'@'%'identifiedby'123456';
QueryOK,0rowsaffected(0.68sec)
mysql>grant'dev_role'to'dev1'@'%';
QueryOK,0rowsaffected(0.38sec)
#查看用戶權(quán)限
mysql>showgrantsfor'dev1'@'%';
+------------------------------------+
|Grantsfordev1@%|
+------------------------------------+
|GRANTUSAGEON*.*TO`dev1`@`%`|
|GRANT`dev_role`@`%`TO`dev1`@`%`|
+------------------------------------+
2rowsinset(0.63sec)
#使用dev1用戶登錄
root@localhost~]#mysql-udev1-p123456
mysql>showdatabases;
+--------------------+
|Database|
+--------------------+
|information_schema|
+--------------------+
1rowinset(0.34sec)
mysql>selectCURRENT_ROLE();
+----------------+
|CURRENT_ROLE()|
+----------------+
|NONE|
+----------------+
1rowinset(0.59sec)

什么情況?貌似和我們想象不同,賦予用戶某個(gè)角色權(quán)限后,該用戶并沒(méi)有獲得相應(yīng)權(quán)限。

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

#使用setdefaultrole命令激活角色
mysql>SETDEFAULTROLEALLTOdev1;
QueryOK,0rowsaffected(0.77sec)
#重新登錄發(fā)現(xiàn)權(quán)限正常
root@localhost~]#mysql-udev1-p123456
mysql>selectCURRENT_ROLE();
+----------------+
|CURRENT_ROLE()|
+----------------+
|`dev_role`@`%`|
+----------------+
1rowinset(0.57sec)
mysql>showdatabases;
+--------------------+
|Database|
+--------------------+
|db1|
|information_schema|
+--------------------+
2rowsinset(1.05sec)

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

#查看activate_all_roles_on_login變量
mysql>showvariableslike'activate_all_roles_on_login';
+-----------------------------+-------+
|Variable_name|Value|
+-----------------------------+-------+
|activate_all_roles_on_login|OFF|
+-----------------------------+-------+
1rowinset(1.53sec)
#啟用該變量先動(dòng)態(tài)啟用之后可以將此參數(shù)加入my.cnf配置文件中
mysql>setglobalactivate_all_roles_on_login=on;
QueryOK,0rowsaffected(0.50sec)
#之后角色就會(huì)自動(dòng)激活
mysql>createuser'dev2'@'%'identifiedby'123456';
QueryOK,0rowsaffected(0.68sec)
mysql>grant'dev_role'to'dev2'@'%';
QueryOK,0rowsaffected(0.38sec)
root@localhost~]#mysql-udev2-p123456
mysql>selectCURRENT_ROLE();
+----------------+
|CURRENT_ROLE()|
+----------------+
|`dev_role`@`%`|
+----------------+
1rowinset(0.57sec)
mysql>showdatabases;
+--------------------+
|Database|
+--------------------+
|db1|
|information_schema|
+--------------------+
2rowsinset(1.05sec)

2. role 相關(guān)操作

上面我們介紹了創(chuàng)建角色及給用戶授予角色權(quán)限,關(guān)于 role 相關(guān)操作還有很多,我們接著來(lái)看下。

#變更角色權(quán)限
mysql>grantselectondb2.*to'dev_role'@'%';
QueryOK,0rowsaffected(0.33sec)
#擁有該角色的用戶重新登錄后權(quán)限也會(huì)對(duì)應(yīng)變化
root@localhost~]#mysql-udev1-p123456
mysql>showdatabases;
+--------------------+
|Database|
+--------------------+
|db1|
|db2|
|information_schema|
+--------------------+
3rowsinset(2.01sec)
#回收角色權(quán)限
mysql>revokeSELECTONdb2.*from'dev_role'@'%';
QueryOK,0rowsaffected(0.31sec)
#撤銷(xiāo)用戶的角色
mysql>revoke'dev_role'@'%'from'dev1'@'%';
QueryOK,0rowsaffected(0.72sec)
mysql>showgrantsfor'dev1'@'%';
+----------------------------------+
|Grantsfordev1@%|
+----------------------------------+
|GRANTUSAGEON*.*TO`dev1`@`%`|
+----------------------------------+
1rowinset(1.06sec)
#刪除角色(刪除角色后對(duì)應(yīng)的用戶也會(huì)失去該角色的權(quán)限)
mysql>droproledev_role;
QueryOK,0rowsaffected(0.89sec)

我們還可以通過(guò) mandatory_roles 變量來(lái)配置強(qiáng)制性角色。使用強(qiáng)制性角色,服務(wù)器會(huì)為全部的用戶戶默認(rèn)賦予該角色,而不需要顯示執(zhí)行授予角色??梢允褂?my.cnf 文件或者使用 SET PERSIST 進(jìn)行配置,例如:

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


需要注意的是,配置在 mandatory_roles 中的角色不能撤銷(xiāo)其權(quán)限,也不能刪除。

總結(jié):

關(guān)于 role 角色相關(guān)知識(shí),簡(jiǎn)單總結(jié)幾點(diǎn)如下:

  • role 是一個(gè)權(quán)限的集合,可以被賦予不同權(quán)限。
  • 開(kāi)啟 activate_all_roles_on_login 變量,才可以自動(dòng)激活角色。
  • 一個(gè)用戶可以擁有多個(gè)角色,一個(gè)角色也可以授予多個(gè)用戶。
  • 角色權(quán)限變化會(huì)應(yīng)用到對(duì)應(yīng)用戶。
  • 刪除角色,則擁有此角色的用戶也會(huì)喪失此角色的權(quán)限。
  • 可設(shè)置強(qiáng)制性角色,使得所有用戶都擁有此角色的權(quán)限。
  • 角色管理和用戶管理相似,只是角色不能用于登錄數(shù)據(jù)庫(kù)。

以上就是MySQL 角色(role)功能介紹的詳細(xì)內(nèi)容,更多關(guān)于MySQL 角色(role)功能的資料請(qǐng)關(guān)注本站其它相關(guān)文章!

美國(guó)服務(wù)器租用

版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實(shí)時(shí)開(kāi)通

自選配置、實(shí)時(shí)開(kāi)通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專(zhuān)屬顧問(wèn)服務(wù)

1對(duì)1客戶咨詢顧問(wèn)

在線
客服

在線客服:7*24小時(shí)在線

客服
熱線

400-630-3752
7*24小時(shí)客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部