结构化查询语言之 SQL 授权(以 MySQL 为例)

  • 数据的授权包括:

    • 授权读取数据
    • 授权插入新数据
    • 授权更新数据
    • 授权删除数据
    • 每种类型的授权都称为一个权限(privilege)
    • 在数据库的某些特定部分上授权给用户所有这些类型的权限,或者完全不授权,或者这些权限的一个组合
  • 数据库模式上的授权包括:

    • 创建、修改或删除关系等
  • 数据库管理员:拥有最大的授权形式

1. 权限授予

  • 一个创建了新关系的用户将被自动被授予该关系上的所有权限;
  • 授予权限
    • grant 语句:grant <权限列表> on <关系/视图名> to <用户/角色名>
      • select
        • grant select on department to User_1
      • update
        • grant update (budget) on department to User_1
        • update 权限既可以在关系的所有属性上授予又可以只在某些属性上授予;
      • insert
        • insert 权限也可以指定属性列表:对关系的任何插入必须只针对这些属性,系统将其它属性要么赋默认值,要么赋null;
      • delete
      • all privileges
  • SQL授权机制可以对整个关系或一个关系的指定属性授予权限,而不允许对任一关系的指定元祖授予权限;
# create user "User_1"@"localhost" identified by "123456";
# flush privileges;
grant select on department to `User_1`@`localhost`;
grant update (budget) on department to `User_1`@`localhost`; # identified by "123456";

在这里插入图片描述

2. 权限转移

  • 默认情况下,被授予权限的用户/角色无权把此权限授予其它角色;
  • 允许权限转移:with grant option
    • grant select on department to User_1 with grant option;
  • 授权图authorization graph
    在这里插入图片描述
    • 用户具有权限的充分必要条件是:当且仅当存在从授权图的根(即代表数据库管理员的顶点)到代表给用户顶点的路径;

3. 权限收回

  • 权限收回

    • revoke 语句:revoke <权限列表> on <关系/视图名> from <用户/角色名>
      • revoke select on department from User_1;
      • revoke update (budget) on department from User_1;
    • 如果被收回权限的用户已经把权限授予其它用户,权限的收回会更加复杂;
      在这里插入图片描述
  • 用户相互授权破坏权限收回规则:根据用户具有权限的充分必要条件可得,通过相互授权破坏授权规则不可行;

  • 级联收回:在大多数数据库系统中,级联收回是默认行为

    • 防止级联收回:restrict(mysql不支持)
      • revoke select on department from User_1 restrict;
    • 允许级联收回:cascade(mysql不支持)
      • 默认,可省略;
        在这里插入图片描述
  • 收回授权权限:revoke grant option, select on department from User_1;
    在这里插入图片描述


References:
[1] Abraham Silberschatz, Henry F Korth, S Sudarshan. Database System Concepts. New York: McGraw-Hill, 2010
Database System Concepts

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值