0
点赞
收藏
分享

微信扫一扫

MySQL8.0新特性之角色管理

爪哇驿站 2022-08-29 阅读 80

2056793.jpg
MySQL角色是指定的权限集合。像用户帐户一样,角色可以拥有授予和撤消的权限。可以授予用户帐户角色,授予该帐户与每个角色相关的权限。用户被授予角色权限,则该用户拥有该角色的权限。
以下列表总结了MySQL提供的角色管理功能:

  • CREATE ROLE和DROP ROLE角色创建和删除。
  • GRANT和REVOKE 为用户和角色分配和撤销权限。
  • SHOW GRANTS 显示用户和角色的权限和角色分配。
  • SET DEFAULT ROLE 指定哪些帐户角色默认处于活动状态。
  • SET ROLE 更改当前会话中的活动角色。
  • CURRENT_ROLE()功能显示当前会话中的活动角色。

    创建和删除角色

    
    mysql> create role s_dev;
    Query OK, 0 rows affected (0.00 sec)

mysql> grant select,insert,update,delete,alter,drop on test.* to 's_dev';
Query OK, 0 rows affected (0.00 sec)

mysql> drop role s_dev;
Query OK, 0 rows affected (0.06 sec)

### 为用户添加和撤销角色

mysql> grant 's_dev' to test_user@'%';
Query OK, 0 rows affected (0.06 sec)
mysql> revoke 's_dev' from test_user@'%';
Query OK, 0 rows affected (0.00 sec)

### 查看用户角色权限

mysql> grant 's_dev' to test_user@'%';
Query OK, 0 rows affected (0.00 sec)

mysql> show grants for test_user;
+-----------------------------------------------------------------------+
| Grants for test_user@% |
+-----------------------------------------------------------------------+
| GRANT USAGE ON . TO test_user@% |
| GRANT SELECT, INSERT, UPDATE, DELETE ON sbtest.* TO test_user@% |
| GRANT s_dev@% TO test_user@% |
+-----------------------------------------------------------------------+
3 rows in set (0.00 sec)

如果要显示角色具体权限,需要添加using:

mysql> show grants for test_user using 's_dev';
+----------------------------------------------------------------------------------+
| Grants for test_user@% |
+----------------------------------------------------------------------------------+
| GRANT USAGE ON . TO test_user@% |
| GRANT SELECT, INSERT, UPDATE, DELETE ON sbtest. TO test_user@% |
| GRANT SELECT, INSERT, UPDATE, DELETE, DROP, ALTER ON test.
TO test_user@% |
| GRANT s_dev@% TO test_user@% |
+----------------------------------------------------------------------------------+
4 rows in set (0.00 sec)

### 当前会话中的活动角色

mysql> select CURRENT_ROLE();
+----------------+
| CURRENT_ROLE() |
+----------------+
| NONE |
+----------------+
1 row in set (0.00 sec)

### 设置角色激活状态

mysql> set default role s_dev to 'test_user';
Query OK, 0 rows affected (0.05 sec)

登录用户test_user查看:

mysql> select current_role();
+----------------+
| current_role() |
+----------------+
| s_dev@% |
+----------------+
1 row in set (0.00 sec)

### 将当前会话中的活动角色设置为当前账户默认角色

mysql> SET ROLE DEFAULT;
Query OK, 0 rows affected (0.00 sec)

举报

相关推荐

0 条评论