亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MySQL 角色(role)功能介紹

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

前言:

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

  1. role 簡介

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

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

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

# 創(chuàng)建role
mysql> create role 'dev_role';
Query OK, 0 rows affected (0.15 sec)

# 給role授予權(quán)限
mysql> grant select on db1.* to 'dev_role'@'%';
Query OK, 0 rows affected (0.12 sec)

# 查看role的權(quán)限
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)建用戶 并賦予角色權(quán)限
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)

# 查看用戶權(quán)限
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)

什么情況?貌似和我們想象不同,賦予用戶某個(gè)角色權(quán)限后,該用戶并沒有獲得相應(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ù)。

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

# 重新登錄 發(fā)現(xiàn)權(quá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 ,該變量決定是否自動(dòng)激活 role ,默認(rèn)為 OFF 即不自動(dòng)激活,建議將該變量改為 ON ,這樣以后賦予角色給新用戶后就不需要再手動(dòng)激活了。

# 查看 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)

# 啟用該變量 先動(dòng)態(tài)啟用 之后可以將此參數(shù)加入my.cnf配置文件中
mysql> set global activate_all_roles_on_login = on;
Query OK, 0 rows affected (0.50 sec)

# 之后角色就會(huì)自動(dòng)激活
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 相關(guān)操作

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

# 變更角色權(quán)限
mysql> grant select on db2.* to 'dev_role'@'%';
Query OK, 0 rows affected (0.33 sec)

# 擁有該角色的用戶 重新登錄后權(quán)限也會(huì)對(duì)應(yīng)變化
root@localhost ~]# mysql -udev1 -p123456

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| db1                |
| db2                |
| information_schema |
+--------------------+
3 rows in set (2.01 sec)

# 回收角色權(quán)限
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)

# 刪除角色 (刪除角色后 對(duì)應(yīng)的用戶也會(huì)失去該角色的權(quán)限)
mysql> drop role dev_role;
Query OK, 0 rows affected (0.89 sec)

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

# my.cnf 配置
[mysqld]
mandatory_roles='dev_role'

# set 更改變量
SET PERSIST mandatory_roles = 'dev_role';


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

總結(jié):

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

  • role 是一個(gè)權(quán)限的集合,可以被賦予不同權(quán)限。
  • 開啟 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ù)庫。

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

相關(guān)文章

  • MySQL的安裝與配置詳細(xì)教程

    MySQL的安裝與配置詳細(xì)教程

    MySQL是一種關(guān)系數(shù)據(jù)庫管理系統(tǒng),所使用的 SQL 語言是用于訪問數(shù)據(jù)庫的最常用的,本文主要以Mysql免安裝版為例,幫助大家解決安裝與配置mysql的步驟
    2021-06-06
  • 最新MySql8.27主從復(fù)制及SpringBoot項(xiàng)目中的讀寫分離實(shí)戰(zhàn)教程

    最新MySql8.27主從復(fù)制及SpringBoot項(xiàng)目中的讀寫分離實(shí)戰(zhàn)教程

    MySQL主從復(fù)制是一個(gè)異步的復(fù)制過程,底層是基于MySQL1數(shù)據(jù)庫自帶的二進(jìn)制日志功能,這篇文章主要介紹了最新MySql8.27主從復(fù)制及SpringBoot項(xiàng)目中的讀寫分離實(shí)戰(zhàn)教程,需要的朋友可以參考下
    2022-08-08
  • Centos6.5在線安裝mysql 8.0詳細(xì)教程

    Centos6.5在線安裝mysql 8.0詳細(xì)教程

    這篇文章主要為大家介紹了Centos6.5在線安裝 mysql 8.0詳細(xì)教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • 詳解MySQL中的數(shù)據(jù)類型和schema優(yōu)化

    詳解MySQL中的數(shù)據(jù)類型和schema優(yōu)化

    這篇文章主要介紹了MySQL中的數(shù)據(jù)類型和schema優(yōu)化的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)MySQL的知識(shí),感興趣的朋友可以了解下
    2020-10-10
  • MySQL文件權(quán)限存在的安全問題和解決方案

    MySQL文件權(quán)限存在的安全問題和解決方案

    MySQL文件權(quán)限是用來控制用戶對(duì)數(shù)據(jù)庫文件以及目錄的操作權(quán)限,在MySQL中,這些權(quán)限通常由系統(tǒng)管理員分配,通過GRANT和REVOKE語句進(jìn)行管理,本文給大家介紹了MySQL文件權(quán)限存在的安全問題和解決方案,需要的朋友可以參考下
    2024-07-07
  • mysql8.4版本mysql_native_password無法連接問題解決

    mysql8.4版本mysql_native_password無法連接問題解決

    用dbeaver可以直接連接,但是用NAVICAT連接后報(bào)錯(cuò),本文主要介紹了mysql8.4版本mysql_native_password無法連接問題解決,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-07-07
  • MySQL的MVCC是否解決幻讀(最新推薦)

    MySQL的MVCC是否解決幻讀(最新推薦)

    這篇文章主要介紹了MySQL的MVCC是否解決幻讀,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • MySQL百萬級(jí)數(shù)據(jù),怎樣做分頁查詢

    MySQL百萬級(jí)數(shù)據(jù),怎樣做分頁查詢

    這篇文章主要介紹了MySQL百萬級(jí)數(shù)據(jù),怎樣做分頁查詢?今天咱們就來聊聊這個(gè)話題,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • Mysql高性能優(yōu)化技能總結(jié)

    Mysql高性能優(yōu)化技能總結(jié)

    這篇文章主要介紹了Mysql高性能優(yōu)化技能總結(jié)的相關(guān)資料,需要的朋友可以參考下
    2020-02-02
  • mysql分表之后如何平滑上線詳解

    mysql分表之后如何平滑上線詳解

    項(xiàng)目開發(fā)中,我們的數(shù)據(jù)庫數(shù)據(jù)越來越大,隨之而來的是單個(gè)表中數(shù)據(jù)太多,以至于查詢書讀變慢,當(dāng)出現(xiàn)這種情況時(shí),我們可以考慮分表,這篇文章主要給大家介紹了關(guān)于mysql分表之后如何平滑上線的相關(guān)資料,需要的朋友可以參考下
    2021-10-10

最新評(píng)論