概述
SQL语言中的数据控制权限分配是数据库管理的重要组成部分,它涉及到如何合理地为用户分配对数据库资源的访问和使用权限。
- 权限类型:在SQL中,权限主要分为两类,即系统权限和对象权限。系统权限允许用户执行特定的数据库操作,如创建或删除数据库、修改数据库结构等。对象权限则更具体,它涉及到对特定数据库对象的操作,如对表、视图、存储过程等的SELECT、INSERT、UPDATE、DELETE权限。
- 权限分配:权限可以通过GRANT语句分配给用户或角色。通过将权限授予角色,然后再将角色分配给用户,可以简化权限管理。权限的分配可以是多层次的,即超级用户可以将权限授予其他用户,而那些用户也可以将他们的一部分或全部权限授予其他用户。
- 权限回收:使用REVOKE语句可以删除以前授予的权限。这可以用于限制用户的访问,或者在员工离职时确保他们不再有权限访问数据库。
- 权限的级联:在某些数据库系统中,权限的分配和回收可以设置为级联。这意味着当一个用户被授予权限,这些权限也会自动授予该用户创建的所有对象。同样,当从一个用户撤销权限时,该用户的所有对象也将失去相应的权限。
- 权限和安全性:权限分配不仅关系到数据库的正常使用,也直接影响到数据库的安全性。合理的权限分配可以防止未授权访问和数据泄露,是保护数据不被恶意攻击的重要手段。
- 权限和数据完整性:适当的权限分配有助于维护数据完整性。通过限制对数据的写入和修改权限,可以确保只有具备相应权限的用户才能修改数据,从而减少数据损坏的风险。
- 权限和审计:权限分配还与审计有关。数据库管理员可以通过审查权限分配情况来监控和评估数据库的安全状况。
- 权限管理的实际操作:在实际操作中,数据库管理员需要定期审查和更新权限分配,以适应不断变化的业务需求和安全环境。这可能包括添加新用户、删除旧用户、调整权限级别等。
本文要讲的数据控制是控制用户对数据的操作和存储权力,是由 DBA 来决定的。DBMS 数据控制应具有如下功能:
(1)通过 GRANT 和 REVOKE 将授权通知系统,并存入数据字典。
(2)当用户提出请求时,根据授权情况检查是否执行操作请求。
SQL标准包括 DELETE、INSERT、SELECT 和 UPDATE 权限。SELECT 权限对应于 READ 权限,SQL 还包括了 REFERENCES 权限,用来限制用户在创建关系时定义外码的能力。
授权(GRANT)
授权语法格式:
GRANT <权限>[,<权限>]... [ON<对象类型><对象名>] TO <用户>[,<用户>]... [WITH GRANT OPTION];
注意:若指定了 WITH GRANT OPTION
子句,那么获得了权限的用户还可以将权限赋给其他用户;接受权限的用户可以是单个或多个具体的用户,PUBLIC 参数可将权限赋给全体用户。不同类型的操作对象有不同的操作权限,常见的操作权限如下所示:
示例1. 如果用户要求把数据库SPJ中供应商S、零件P、项目J表赋予各种权限。各种授权要求如下:
(1) 将对供应商S、零件P、项目J的所有操作权限赋给用户 USER1 及 USER2。
(2) 将对供应商S的插入权限赋给用户 USER1,并允许将此权限赋给其他用户。
(3) DBA 把数据库 SPJ 中建立表的权限赋给用户 USER1。
参考答案:
(1)GRANT ALL PRIVILEGES ON TABLE S,P,J TO USER1,USER2;
(2)GRANT INSERT ON TABLE S TO USER1 WITH GRANT OPTION;
(3)GRANT CREATE TABLE ON DATABASE SPJ TO USER1;
销权(REVOKE)
销权语法格式:
REVOKE <权限>[,<权限>]... [ON<对象类型><对象名>] FROM <用户>[,<用户>]... [RESTRICT|CASCADE];
其中:RESTRICT 表示只收回指定用户的权限,默认;CASCADE 表示收回指定用户及其授予的其他用户的该权限。
示例2. 要求回收用户对数据库SPJ中供应商S、零件P、 项目J表的操作权限。各种收回权限的要求如下:
(1) 将用户USER1 及USER2对供应商S、零件P、项目J的所有操作权限收回。
(2) 将所有用户对供应商S的所有查询权限收回 。
(3)将USER1 用户对供应商S的供应商编号Sno的修改权限收回。
参考答案:
(1) REVOKE AL PRIVILEGES ON TABLE S,P,J FROM USER1, USER2;
(2) REVOKE SELECT ON TABLE S FROM PUBLIC;
(3) REVOKE UPDATE(Sno) ON TABLE S FROM USER1;
示例3. 收回用户LI对表EMPLOYEE的查询权限,同时级联收回LI授予其他用户的该权限,SQL语句为: (1) SELECT ON TABLE EMPLOYEE FROM LI (2) ;
(1) A.GRANT B.GIVE C.CALL BACK D. REVOKE
(2) A.RESTRICT B.CASCADE C.WITH GRANT OPTION D. WITH CHECK OPTION
答案:(1)的正确选项为D,(2)的正确选项为B。
总结
总之,SQL语言提供了一套全面的数据控制机制,包括数据安全性、完整性、并发和恢复控制,使得数据库管理员能够有效地管理和维护数据库系统。通过合理地设置和使用这些控制机制,可以确保数据库的稳定性、可靠性和安全性,从而为应用程序和最终用户提供一致和可信的数据服务。