管理数据库安全

紫色代表一级目录
粉红代表二级目录
蓝色代表三级目录
红色代表关键字
橙色代表说明

数据库安全
  数据库安全就是保护数据不受到未授权访问。
权限
  权限是用于访问数据库本身、访问数据库里的对象、操作数据库里的数据、在数据库里执行各种管理功能的许可级别。权限是通过GRANT命令分配的,用REVOKE命令撤销。
  系统权限
    系统权限允许用户在数据库里执行管理操作,比如创建数据库、删除数据库、创建用户账户、删除用户、删除和修改数据库对象、修改对象的状态、修改数据库的状态以及其他会对数据库造成重要影响的操作。
    下面是SQL Server里一些常见系统权限:
    CREATE DATABASE——允许建立新的数据库;
    CREATE PROCEDURE——允许建立新的存储过程;
    CREATE VIEW——允许建立新的视图;
    BACKUP DATABASE——允许用户对数据库进行备份;
    CREATE TABLE——允许用户建立新表;
    CREATE TRIGGER——允许用户在表上建立触发器;
    EXECUTE——允许用户在特定数据库中运行给定的存储过程。
    下面是Oracle里一些常见系统权限:
    CREATE TABLE——允许用户在特定规划中建立新表;
    CREATE ANY TABLE——允许用户在任意规划中建立新表;
    ALTER ANY TABLE——允许用户在任意规划中修改表结构;
    DROP TABLE——允许用户在特定规划中删除表对象;
    CREATE USER——允许用户创建其他用户账户;
    DROP USER——允许用户删除既有用户账户;
    ALTER USER——允许用户修改既有用户账户;
    ALTER DATABASE——允许用户修改数据库特性;
    BACKUP ANY TABLE——允许用户备份任意规划中任意表的数据;
    SELECT ANY TABLE——允许用户查询任意规划中任意表的数据。
    下面是MySQL里一些常见的全局(系统)权限:
    CREATE——允许用户创建特定对象,如数据库、表或索引;
    DROP——允许用户删除特定对象;
    GARNT——允许用户对特定对象分配权限;
    RELOAD——允许用户进行清除缓存操作,以便清除缓存中的日志文件等内容;
    SHUTDOWN——允许用户关闭MySQL实例。
  对象权限
    对象权限是针对对象的许可级别,意味着必须具有适当的权限才能对数据库对象进行操作。
    ANSI标准里包含下述对象权限。
    USAGE:批准使用指定的域。
    SELECT:允许访问指定的表。
    INSERT(column_name):允许对数据插入到指定表的指定字段。
    INSERT:允许对数据插入到指定表的全部字段。
    UPDATE(column_name):允许对指定表里的指定字段进行更新。
    UPDATE:允许对指定表里的全部字段进行更新。
    REFERENCES(column_name):允许在完整性约束里引用指定表里的指定字段,任何完整性约束都需要这个权限。
    REFERENCES:允许引用指定表里的全部字段。
    对象的所有者自动被授予与对象相关的全部权限。有些SQL实现里还可以利用GRANT OPTION命令分配这些权限。

控制用户访问
  用户访问主要是通过用户账户和密码进行控制的,但在大多数主流实现里,这是不足以访问数据库的。
  GRANT命令
    语法:
    在这里插入图片描述
    例:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
      GRANT OPTION是个功能强大的GRANT选项。当对象的所有者利用GRANT OPTION把自己对象的权限授予另一个用户时,这个用户还可以把这个对象的权限授予其他用户,尽管他并不是这个对象的所有者。
    在这里插入图片描述
      使用ADMIN OPTION授予权限之后,用户不仅拥有了权限,也具有了把这个权限授予其他用户的能力,这一点与GRANT OPTION类似。但GRANT OPTION用于对象级权限,而ADMIN OPTION用于系统级权限。当一个用户用ADMIN OPTION向另一个用户授予系统权限之后,后者还可以把系统权限授予其他用户。
  REVOKE
    当一个被使用GRANT OPTION或ADMIN OPTION授予了权限的用户被删除之后,权限与用户之间的关联也被断开了。
    语法:
    在这里插入图片描述
    例:
    在这里插入图片描述
  控制对单独字段的访问
    在这里插入图片描述
  数据库账户PUBLIC
    数据库账户PUBLIC是个代表数据库里全体用户的账户。所有用户都属于PUBLIC账户。如果某个权限被授予PUBLIC账户,那么数据库全部用户都具有这个权限。类似地,如果一个权限从PUBLIC上撤销,就相当于从全部数据库用户上撤销了这个权限,除非这个权限明确地授予了特定用户。
    例:
    在这里插入图片描述
  权限组
    Oracle在其实现里包含以下权限组:
      CONNECT——允许用户连接数据库,并且对已经访问过的任何数据库对象进行操作。
      RESOURCE——允许用户创建对象、删除其所拥有的对象、为其所拥有的对象赋予权限等。
      DBA——允许用户在数据库中对任何对象进行任何操作。
  通过角色控制权限
    角色是数据库里的一个对象,具有类似权限组的特性。通过使用角色,我们不必明确地直接给用户授予权限,从而减少安全维护工作。使用角色可以更方便地进行组权限管理。角色的权限可以被修改,而这种修改对于用户来说是透明的。
    CREATE ROLE语句
      角色是由CREATE ROLE语句创建的
      语法:
      在这里插入图片描述
    DROP ROLE语句
      这个语句用于删除角色
      语法:
      在这里插入图片描述
    SET ROLE语句
      使用SET ROLE语句可以为用户的SQL会话设置角色
      语法:
      在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值