开发指南—权限管理—角色权限管理

简介: 本文介绍角色权限管理相关语法级示例。PolarDB-X兼容原生MySQL 8.0基于橘色的权限控制,请参见基于角色的权限控制。

创建角色

语法:


CREATE ROLE role [, role]...

role同user一样也由Name和Host这两部分组成,其中:

  • Name不能为空;
  • Host需满足如下规则:
  • 必须是纯IP地址,可以包含下划线(_)和百分号(%),但这两个符号仅代表2个普通字符,并不具备通配符意义;
  • Host留空等于%,但也是精准匹配,不具备通配符意义。

示例:


mysql> CREATE ROLE 'role_ro'@'%', 'role_write';

删除角色

语法:


DROP ROLE role [, role] ...

示例:


mysql> DROP ROLE 'role_ro'@'%';

授予角色

将权限授予角色

语法:


GRANT priv_type [, priv_type] ... ON priv_level TO role [, role]... [WITH GRANT OPTION]

示例:


mysql> GRANT ALL PRIVILEGES ON db1.* TO 'role_write';

将角色授予用户

语法:


GRANT role [, role] ...
    TO user_or_role [, user_or_role] ...
    [WITH ADMIN OPTION]

说明:

  • 执行该命令必须满足如下条件的其中之一:
  • 当前用户有CREATE_USER权限;
  • 当前用户对Role有admin权限;
  • 如果包含WITH ADMIN OPTION选项,则目标用户对该Role拥有admin权限;
  • 将角色授予用户并不代表此用户已拥有该角色下的权限,您还需要通过SET DEFAULT ROLE语句和SET ROLE语句为用户设置需要激活的角色。

示例:


mysql> GRANT 'role_write' TO 'user1'@'127.0.0.1';

设置默认角色

语法:


SET DEFAULT ROLE
    {NONE | ALL | role [, role ] ...}
    TO user [, user ] ...

执行该命令必须满足如下条件的其中之一:

  • 语句中所提到的Role已通过GRANT命令授予给目标用户;
  • 当前用户为目标用户,或当前用户有CREATE_USER权限。

示例:


mysql> SET DEFAULT ROLE 'role_write' TO 'user1'@'127.0.0.1';

设置当前连接角色

语法:


SET ROLE {
    DEFAULT
  | NONE
  | ALL
  | ALL EXCEPT role [, role ] ...
  | role [, role ] ...
}


说明

  • 若选择执行SET ROLE DEFAULT ,则当前激活的角色为SET DEFAULT ROLE命令中选择的角色;
  • 通过该语法激活的角色仅对使用当前连接的用户生效。

示例:


mysql> SET ROLE 'role_write';;

查看角色权限

语法:


SHOW GRANTS
    [FOR user_or_role
        [USING role [, role] ...]]

示例:


mysql>  SHOW GRANTS FOR 'role_write'@'%';
+---------------------------------------------------+
| GRANTS FOR 'ROLE_WRITE'@'%'                       |
+---------------------------------------------------+
| GRANT USAGE ON *.* TO 'role_write'@'%'            |
| GRANT ALL PRIVILEGES ON db1.* TO 'role_write'@'%' |
+---------------------------------------------------+
mysql> SHOW GRANTS FOR 'user1'@'127.0.0.1' USING 'role_write';
+------------------------------------------------------+
| GRANTS FOR 'USER1'@'127.0.0.1'                       |
+------------------------------------------------------+
| GRANT USAGE ON *.* TO 'user1'@'127.0.0.1'            |
| GRANT ALL PRIVILEGES ON db1.* TO 'user1'@'127.0.0.1' |
| GRANT 'role_write'@'%' TO 'user1'@'127.0.0.1'        |
+------------------------------------------------------+
-- 以user1的会话执行
mysql> SELECT CURRENT_ROLE();
+------------------+
| CURRENT_ROLE()   |
+------------------+
| 'role_write'@'%' |
+------------------+

回收角色

回收角色的权限

语法:


REVOKE priv_type [, priv_type] ... ON priv_level FROM role [, role]...

示例:


mysql> REVOKE ALL PRIVILEGES ON db1.* FROM 'role_write';
mysql> SHOW GRANTS FOR 'role_write'@'%';
+----------------------------------------+
| GRANTS FOR 'ROLE_WRITE'@'%'            |
+----------------------------------------+
| GRANT USAGE ON *.* TO 'role_write'@'%' |
+----------------------------------------+

回收用户的权限

语法:


REVOKE role [, role ] ... FROM user_or_role [, user_or_role ] ...

示例:


mysql> SHOW GRANTS FOR 'user1'@'127.0.0.1';
+-----------------------------------------------+
| GRANTS FOR 'USER1'@'127.0.0.1'                |
+-----------------------------------------------+
| GRANT USAGE ON *.* TO 'user1'@'127.0.0.1'     |
| GRANT SELECT ON db1.* TO 'user1'@'127.0.0.1'  |
| GRANT 'role_write'@'%' TO 'user1'@'127.0.0.1' |
+-----------------------------------------------+
mysql> REVOKE 'role_write' FROM 'user1'@'127.0.0.1';
mysql> SHOW GRANTS FOR 'user1'@'127.0.0.1';
+----------------------------------------------+
| GRANTS FOR 'USER1'@'127.0.0.1'               |
+----------------------------------------------+
| GRANT USAGE ON *.* TO 'user1'@'127.0.0.1'    |
| GRANT SELECT ON db1.* TO 'user1'@'127.0.0.1' |
+----------------------------------------------+
相关文章
|
算法
以太网CSMA/CD协议:通信原理、碰撞检测与退避机制深度解析
以太网CSMA/CD协议:通信原理、碰撞检测与退避机制深度解析
2184 1
|
运维 监控 API
深入了解微服务架构:优势与挑战
【10月更文挑战第7天】深入了解微服务架构:优势与挑战
|
机器学习/深度学习 新零售 人工智能
袋鼠云:阿里云数加生态中的新星,A轮融资引领数据智能新篇章
总之,袋鼠云的A轮融资不仅是对其过去成绩的肯定更是对其未来发展的期许。我们有理由相信在未来的日子里袋鼠云将在大数据和云计算领域继续书写属于自己的辉煌篇章
|
存储 安全 物联网
未来已来:探索新兴技术的发展趋势与应用前景
【8月更文挑战第14天】随着科技的飞速发展,新兴技术如区块链、物联网和虚拟现实等正在逐渐改变我们的生活和工作方式。本文将深入探讨这些技术的发展现状和未来趋势,以及它们在不同领域的应用场景。我们将从技术创新的角度出发,分析这些技术如何推动社会进步,并讨论它们面临的挑战和机遇。通过对未来技术趋势的预测,我们可以更好地准备迎接即将到来的变革。
349 0
|
存储 Cloud Native 数据处理
陶建辉荣获 2024 年“中国计算机学会(CCF)杰出工程师奖”,TDengine 技术创新力再获肯定
近日,中国计算机学会(CCF)正式公布了 2024 年“CCF 杰出工程师奖”获奖名单,其中,涛思数据(TDengine)创始人陶建辉凭借其在开源领域和时序数据库领域的卓越贡献,荣获此项殊荣。这一奖项的授予,不仅是对陶建辉在技术革新和开源生态发展中突出贡献的高度肯定,更是对 TDengine 在全球工业界和开发者社区中产生的深远影响的认可。
124 0
|
前端开发 关系型数据库 数据库连接
项目重构,从零开始搭建一套新的后台管理系统(后端版)
项目重构,从零开始搭建一套新的后台管理系统(后端版)
663 0
【算法系列篇】递归、搜索和回溯(二)
【算法系列篇】递归、搜索和回溯(二)
|
数据采集 人工智能 运维
数据的“敏捷制造”,DataWorks一站式数据开发治理范式演进 | 《一站式大数据开发治理DataWorks使用宝典》
企业大数据技术发展至今,历经了两次蜕变。第一次蜕变从最初的“小作坊”解决大数据问题,到后来企业用各类大数据技术搭建起属于自己的“大平台”,通过平台化的能力完成数据生产力的升级。第二次蜕变让大数据从“大平台”向“敏捷制造”的开发范式演进。基于DataWorks的一站式大数据开发治理的平台,就是这个蜕变最好的佐证。
2178 0
数据的“敏捷制造”,DataWorks一站式数据开发治理范式演进 | 《一站式大数据开发治理DataWorks使用宝典》
|
算法 Unix Go
Go只会并发,不会控制,白学了
Go只会并发,不会控制,白学了
|
存储 NoSQL 算法
那些面试官口中常常提到b树(MySQL索引底层数据结构)
那些面试官口中常常提到b树(MySQL索引底层数据结构)
233 0