91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

MySQL8 role角色功能介紹

發布時間:2020-02-28 23:05:01 來源:網絡 閱讀:156 作者:wjw555 欄目:系統運維

role角色功能對于Oracle數據庫來說不算是什么特殊, 然而對于mysql來說 MySQL8.0新增了role角色功能意義還是令人新奇不少,同時也是很多使用MySQL服務的用戶一直所期盼的

MySQL8.0中新增的role功能,DBA可以創建角色,對其賦予權限,并且將他們授權用戶,使用角色可以大量減輕DBA的工作,可以輕松管理每個團隊、用戶的各種復雜的權限

下面詳細介紹一下MySQL中如何使用角色:

一、創建刪除角色:

創建角色使用 “CREATE ROLE”語句,假設我們為應用程序創建只讀角色、讀寫角色和開發人員角色。

root@localhost:mysql.sock 20:37: [(none)]>create role 'db_read', 'db_rw', 'db_dev';
Query OK, 0 rows affected (0.08 sec)

角色的名稱與MySQL的賬戶名稱非常相似,由用戶名+主機名稱構成,如果省略主機名稱則默認為'%'。

二、刪除角色使用:

root@localhost:mysql.sock 20:39: [(none)]>drop role db_dev;
Query OK, 0 rows affected (0.08 sec)

三、賦予/撤銷權限:

角色創建以后,需要對其賦予相應的權限。使用下列語句分別對角色賦予全部權限、只讀權限和讀寫權限:
全部權限:

root@localhost:mysql.sock 20:43: [(none)]>create role 'db_dev';
Query OK, 0 rows affected (0.03 sec)

root@localhost:mysql.sock 20:44: [(none)]>grant all on app_db.* to 'db_dev';
Query OK, 0 rows affected (0.04 sec)

只讀權限:

root@localhost:mysql.sock 20:44: [(none)]>grant select  on app_db.* to 'db_read';
Query OK, 0 rows affected (0.08 sec)

讀寫權限:

root@localhost:mysql.sock 20:46: [(none)]>grant select,insert,update,delete  on app_db.* to 'db_rw';
Query OK, 0 rows affected (0.07 sec)

四、賦予角色權限后,將相應的角色授予用戶

例如:
創建用戶:

root@localhost:mysql.sock 20:50: [(none)]>create user 'db_dev_user'@'localhost' identified by 'passjw01';
Query OK, 0 rows affected (0.09 sec)

root@localhost:mysql.sock 20:52: [(none)]>create user 'db_read_user'@'localhost' identified by 'passjw02';
Query OK, 0 rows affected (0.08 sec)

root@localhost:mysql.sock 20:52: [(none)]>create user 'db_rw_user'@'localhost' identified by 'passjw03';
Query OK, 0 rows affected (0.05 sec)

授予角色權限:

root@localhost:mysql.sock 20:53: [(none)]>grant 'db_dev' to 'db_dev_user'@'localhost';
Query OK, 0 rows affected (0.07 sec)

root@localhost:mysql.sock 20:54: [(none)]>grant 'db_read' to 'db_read_user'@'localhost';
Query OK, 0 rows affected (0.02 sec)

root@localhost:mysql.sock 20:54: [(none)]>grant 'db_rw' to 'db_rw_user'@'localhost';
Query OK, 0 rows affected (0.07 sec)

五、撤銷用戶的角色和撤銷角色的權限:

root@localhost:mysql.sock 20:54: [(none)]>revoke 'db_dev'  from 'db_dev_user'@'localhost';
Query OK, 0 rows affected (0.03 sec)

root@localhost:mysql.sock 20:55: [(none)]>revoke  all on app_db.* from db_dev;
Query OK, 0 rows affected (0.10 sec)

root@localhost:mysql.sock 20:57: [(none)]>

六、查看角色的權限:

當角色授予用戶后,我們可以查看用戶擁有的權限,執行:

root@localhost:mysql.sock 20:59: [(none)]>show grants for 'db_rw_user'@'localhost';
+------------------------------------------------+
| Grants for db_rw_user@localhost                |
+------------------------------------------------+
| GRANT USAGE ON *.* TO `db_rw_user`@`localhost` |
| GRANT `db_rw`@`%` TO `db_rw_user`@`localhost`  |
+------------------------------------------------+
2 rows in set (0.00 sec)

是否注意到,執行show grants語句只是看到了用戶被賦予了角色,該角色具有哪些權限該如何查看呢?執行下面的語句可以確認相關內容:

root@localhost:mysql.sock 21:01: [(none)]>show grants for 'db_rw_user'@'localhost' using 'db_rw';
+--------------------------------------------------------------------------------+
| Grants for db_rw_user@localhost                                                |
+--------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `db_rw_user`@`localhost`                                 |
| GRANT SELECT, INSERT, UPDATE, DELETE ON `app_db`.* TO `db_rw_user`@`localhost` |
| GRANT `db_rw`@`%` TO `db_rw_user`@`localhost`                                  |
+--------------------------------------------------------------------------------+
3 rows in set (0.00 sec)

七、強制性角色:

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

[mysqld]
mandatory_roles='role1,role2@localhost'
SET PERSIST mandatory_roles = 'role1,role2@localhost;

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

八、角色自動激活:

賦予用戶帳戶的角色在帳戶會話中可以處于活動狀態,也可以處于非活動狀態。如果賦予的角色在會話中處于活動狀態,
則具有相應的權限,反之則沒有。要確定當前會話中哪些角色處于活動狀態,使用CURRENT_ROLE()函數。

root@localhost:mysql.sock 21:01: [(none)]>select CURRENT_ROLE();
+----------------+
| CURRENT_ROLE() |
+----------------+
| NONE           |
+----------------+
1 row in set (0.00 sec)

默認情況下,向帳戶賦予角色或在mandatory_roles系統變量值中為其命名后,該角色在帳戶會話中不會變為活動狀態。
要指定每次用戶連接到服務器,進行身份驗證時激活角色,請使用 SET DEFAULT ROLE:

root@localhost:mysql.sock 21:04: [(none)]>set default role  all to  'db_dev_user'@'localhost', 'db_rw_user'@'localhost', 'db_read_user'@'localhost';
Query OK, 0 rows affected (0.06 sec)

之后,用app_dev_user登陸服務器,查看當前角色權限:

[root@localhost ~]# mysql -udb_rw_user -p'passjw03'
db_rw_user@localhost:mysql.sock 21:11: [(none)]>show databases;
+--------------------+
| Database           |
+--------------------+
| app_db             |
| information_schema |
+--------------------+
db_rw_user@localhost:mysql.sock 21:11: [(none)]>select CURRENT_ROLE();
+----------------+
| CURRENT_ROLE() |
+----------------+
| `db_rw`@`%`    |
+----------------+
1 row in set (0.00 sec)

查看當前登錄用戶:

db_rw_user@localhost:mysql.sock 10:39: [(none)]>select current_user();
+----------------------+
| current_user()       |
+----------------------+
| db_rw_user@localhost |
+----------------------+
1 row in set (0.00 sec)

db_rw_user@localhost:mysql.sock 10:39: [(none)]>select current_user;
+----------------------+
| current_user         |
+----------------------+
| db_rw_user@localhost |
+----------------------+
1 row in set (0.00 sec)

要在用戶連接到服務器時,使所有顯式賦予的角色和強制角色自動激活,請啟用activate_all_roles_on_login 系統變量。默認情況下,禁用自動角色激活。

關于MySQL中使用角色就介紹到這里,更為詳盡的內容請訪問官網手冊
https://dev.mysql.com/doc/refman/8.0/en/roles.html

向AI問一下細節

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

AI

焦作市| 内乡县| 北川| 济源市| 河南省| 调兵山市| 屏东县| 收藏| 司法| 郯城县| 汪清县| 顺昌县| 芮城县| 邯郸县| 麻城市| 塔城市| 那曲县| 正镶白旗| 金华市| 乐至县| 白城市| 会东县| 华坪县| 灌阳县| 日照市| 新蔡县| 于都县| 武汉市| 大城县| 威远县| 汉寿县| 丽水市| 会宁县| 林芝县| 华安县| 噶尔县| 阳江市| 怀柔区| 泌阳县| 临夏县| 正定县|