SQL 数据库角色

本文最后更新于:2024年3月18日 凌晨

SQL 数据库角色

  • 数据库角色是被命名的一组与数据库操作相关的权限,角色是权限的集合,因此,可以为一组具有相同权限的用户创建一个角色,使用角色来管理数据库权限可以简化授权的过程。
  • 在SQL中首先用CREATE ROLE语句创建角色,然后用GRANT语句给角色授权,用REVOKE语句收回授予角色的权限。

角色的创建

  • 创建角色的SQL语句格式是:
1
CREATE ROLE <角色名>
  • 刚刚创建的角色是空的,没有任何内容,可以用GRANT为角色授权。

给角色权限

1
2
3
GRANT <权限> [,<权限>]...
ON <对象类型> 对象名。
TO <角色> [,<角色>]...
  • 数据库管理员和用户可以利用GRANT语句将权限授予某一个或几个角色。

将一个角色授予其他的角色或用户

1
2
3
GRANT <角色1> [,<角色2>]..
TO <角色3>[,<用户1>]...
[WITH ADMIN OPTION]
  • 该语句把角色授予某用户,或授予另一个角色,这样,一个角色(例如角色3)所拥有的权限就是授予它的全部角色(例如角色1和角色2)所包含的权限的总和。
  • 授予者或者是角色的创建者,或者拥有在这个角色上的ADMIN OPTION
  • 如果指定了WITH ADMIN OPTION子句,则获得某种权限的角色或用户还可以把这种权限再授予其他的角色。
  • 一个角色包含的权限包括直接授予这个角色的全部权限加上其他角色授予这个角色的全部权限。

角色权限的收回

1
2
3
REVOKE <权限> [,<权限>]...
ON <对象类型> <对象名>
FROM <角色> [,<角色>]...
  • 用户可以收回角色的权限,从而修改角色拥有的权限。
  • REVOKE动作的执行者或者是角色的创建者,或者拥有再这个(些)角色上的ADMIN OPTION

[例4.11]:通过角色来实现将一组权限授予一个用户。

  • 首先创建一个角色R1

    1
    CREATE ROLE R1;
  • 然后使用GRANT语句,使角色R1拥有Student表的SELECT,UPDATE,INSERT权限。

    1
    2
    3
    GRANT SELECT,UPDATE,INSERT
    ON TABLE Student
    TO R1;
  • 将这个角色授予王平,张明,赵玲,使他们具有角色R1所包含的全部权限。

    1
    2
    GRANT R1
    TO 王平,张明,赵玲;
  • 当然,你可以一次性地通过R1来收回王平的这三个权限。

    1
    2
    REVOKE R1
    FROM 王平;

[例4.12]:角色的权限修改。

1
2
3
GRANT DELETE
ON TABLE Student
TO R1
  • 使角色R1在原来的基础上增加了Student表的DELETE权限。

[例4.13]

1
2
3
REVOKE SELECT
ON TABLE Student
FROM R1;
  • 使R1减少了SELECT权限。
  • 可以看出,数据库角色是一组权限的集合,使用角色来管理数据库权限可以简化授权的过程,使自主授权的执行更加灵活,方便。

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!