欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL 角色(role)功能介紹

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

前言:

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

  1. role 簡介

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

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

下面我們具體來體驗下 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)

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

出現(xiàn)上述情況的原因是,在用戶會話中,授予該用戶的角色處于非活動狀態(tài)。只有授予的角色在會話中處于活動狀態(tài)時,該用戶才擁有此角色的權(quán)限,要確定當(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 ,該變量決定是否自動激活 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 相關(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)限也會對應(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)

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

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

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

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


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

總結(jié):

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

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

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

相關(guān)文章

  • MySQL的安裝與配置詳細教程

    MySQL的安裝與配置詳細教程

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

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

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

    Centos6.5在線安裝mysql 8.0詳細教程

    這篇文章主要為大家介紹了Centos6.5在線安裝 mysql 8.0詳細教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    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的知識,感興趣的朋友可以了解下
    2020-10-10
  • MySQL文件權(quán)限存在的安全問題和解決方案

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

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

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

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

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

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

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

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

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

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

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

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

最新評論