数据库安全性(重拳出击)


前言

学无止境,笔勤不辍。上次五一假期給大家介绍了在实际应用中使用MySQL时,对完整性约束的增加、修改、删除,以及trigger(触发器)的创建语法,今天就来介绍一下,MySQL中安全性(简略)…还有补充一些trigger的注意点吧。如果想了解本文之前的一些知识点,欢迎大家前往我的数据库专栏学习。


一、trigger补充

1.MySQL实践中,MySQL本身没有instead of 触发器,只有before和after触发器
2.instead of 触发器不执行触发语句,而是执行触发器中的语句,在运行到触发语句时,建立NEW/OLD表,执行触发器中的语句
3.在表/视图中最多只能定义一个instead of触发器,before、after触发器可以有多个
4.instead of 触发器在 with check option 的可更新视图上不能定义
5.视图中,触发器只能使用instead of 触发器

二、数据库安全性

1.DBMS安全性

1.目的:防止由于非法使用数据库(非法操作)造成数据泄露、篡改、破坏
2.数据库的安全性:保护数据库以防止不合法的使用所造成的数据泄露、更改、破坏

3.安全措施时一级一级设置的:用户(用户标识和鉴别)、DBMS(数据库安全保护)、操作系统(操作系统安全保护)、数据库(数据密码存储)

2.安全措施具体分类

1.用户标识与鉴别:

用户访问DBMS时,首先要进行身份认证

2.存取控制机制

存取控制机制,通过定义用户权限和合法权限检查,实现权限分配和管理。
用户权限定义: 用户对某一数据对象的操作权力称为权限。DBMS系统提供适当的语言来定义用户权限,这些定义经过编译后存放在数据字典中,被称为安全规则或授权规则。
合法权限检查:每当用户发出存取数据库的操作请求后(请求一般应包括操作类型、操作对象和操作用户等信息),DBMS查找数据字典,根据安全规则进行合法权限检查,若用户的操作请求超出了定义的权限,系统将拒绝执行此操作。
tips:DBMS支持自主存取和强制存取两类存取控制方法

1.在自助存取控制方法中,用户对于不同的数据库对象有不同的存取权限,不同的用户对同一对象也有不同的权限,而且用户还可将其拥有的存取权限转授给其他用户。因此自主存取控制非常灵活。

2.在强制存取控制方式中,没一个数据库对象被标以一定密级,每一个用户也被授予某一个级别的许可证。对于任意一个对象,只有具有合法许可证的用户才可以存取。强制存取控制因此相对比较严格。

3.视图

为不同用户定义不同视图,把数据对象限制在一定范围,能达到访问控制的效果,通过试图机制把要保密的数据对无权存取的用户隐藏起来,从而自动地对数据提供一定程度的安全保护。

其他

其他措施感兴趣的读者可以自行查阅…
查询修改、跟踪审计、数据加密

3.用户标识和鉴别

1.用户标识:用一个用户名(User Name)或用户标识号(ID)来标明用户身份。系统记录着所有合法所有合法用户的标识,系统鉴别此用户是否是合法用户,若是,则可以进入下一步的核实;若不是,则不能使用系统。
2.口令:为了进一步核实用户,系统常常要求输入口令为了保密起见,用户在终端上输入的口令不显示在屏幕上。系统核对口令以鉴别用户身份。

4.用户和角色

1.角色是一组具有相同权限的用户集合
可以用 CREATE ROLE 创建
具体语法如下:

CREATE ROLE<角色名>[AUTHORIZATION <用户名/角色名>]

2创建用户
以下是实例:

 CREATE USER '李勇'@'localhost' IDENTIFIED BY '123'; //创建了一个名为李勇的本地数据库用户,登录密码是123;

4.授权和回收

GRANT语句向用户授予权限,REVOKE语句收回用户权限

1.GRANT语句一般格式:

GRANT <权限>[,<权限>]……
ON <对象类型><对象名>[,<对象了类型><对象名>]……
TO <用户>[,<用户>]……
[WITH GRANT OPTION];

如果指定了WITH GRANT OPTION子句,则获得某种权限的用户还可以把这种权限再授予其它用户。如果没有指定WITH GRANT OPTION子句,则获得某种权限的用户只能使用该权限,不能传播该权限。

SQL标准允许具有WITH GRANT OPTION的用户把相应权限或其子集传授与其他用户,但不允许循环授权,即被授权者不能把权限再授回给授权者。
给一个例子:

GRANT CREATE ON GradeManager TO '李勇'@'localhost';//将GradeManager中创建表的权限赋予李勇
  GRANT CREATE ROUTINE ON GradeManager.* TO '李勇'@'localhost';//将GradeManager中创建存储过程的权限赋予李勇
  GRANT ALL PRIVILEGES ON STUDENT TO'李勇敏'@'localhost'
    -> WITH GRANT OPTION;//把STUDENT表中所有操作的权限赋予给李勇,并且李勇用户能够把这个权限再授予给其他人

2.REVOKE语句一般格式:

REVOKE <权限>[,<权限>]
ON <对象类型><对象名>[,<对象类型><对象名>]……
FROM <用户>[,<用户>]……[CASCADE|RESTRICT];

如果用户被赋予权限时有WITH GRANT OPTION语句,则用CASCADE将间接获得该权限的用户的权限也一并收回


总结

以上就是今天要讲的内容,本文介绍了一下数据库安全性的相关知识、语法。原本打算把存储过程也给写了,但是笔者累了hhh,就留到下次更新吧… 下次笔者应该会更新算法专栏(好久没有更新它了…)感兴趣的读者可以关注一下…

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值