¶前言
— 吴文英: 风入松·听风听雨过清明
听风听雨过清明,愁草瘗花铭。楼前绿暗分携路,一丝柳,一寸柔情。料峭春寒中酒,交加晓梦啼莺。
西园日日扫林亭,依旧赏新晴。黄蜂频扑秋千索,有当时、纤手香凝。惆怅双鸳不到,幽阶一夜苔生。
今早晚起,来到实验室大门紧闭,暗光尤凉啊,窗帘落幕,显得格外清幽;于是乎,接着昨天的数据库题目继续整理,享受这片刻安宁…
¶说明
这部分和前一片博文内容一样,在书写上的格式、规范及环境配置等,详见:数据库题目整理及详解(一),说明部分 。
这一部分主要内容为:mysql数据库权限相关的SQL语句。
¶题目解析
2.考虑如下关系模式:
Employee(Eno, Ename, Birthday, Title, Salary, Dno)
Department(Dno, Dname, MgrNo, Address, Phone)
使用 SQL 提供的功能完成如下授权:
(1) 允许 WangLan 对两个关系进行任何操作,并可以将他的权限转授他人。
(2) 允许所有用户查询 Department 关系。
(3) 允许所有用户查询 Employee 关系的 Salary 属性进行修改。
(4) 允许 LiYong 对 Employee 关系的 Salary 属性进行修改。
(5) 允许 ShangHua 查询每个部门的最低、最高和平均工资。
(6) 定义一个角色 Secretary,可以对 Department 进行任何操作,对 Employee
除了不能修改 Salary 属性值之外,可以进行任何操作。
(7) LiHua 是秘书,拥有角色 Secretary 的权限。
(8) 回收(1)-(4)的权限。
(9) 不允许角色 Secretary 修改 Employee 的 Title 属性值。
¶初始化: 创建数据库、建表、插入数据
1, 创建数据库:
1 | create database emp; ## 创建名为:emp的数据库 |
2, 创建department数据表:
1 | create table department ( ## 创建department表 |
注意到,在创建department表时,最后一个属性phone当时错误写为:phont了(详见配图),修改表属性使用如下操作:
1 | ## 修改写错的表属性:phone |
3, 在department表中插入数据:
1 | insert into department (dno, dname, mgrno, address, phone) values ('d0001', 'dname001', 'mgrno01', 'add001', '18839952431'); |
4, 创建employee数据表
1 | create table employee ( |
5,在employee表中插入数据:
1 | insert into employee (eno, ename, birthday, title, salary, dno) values ('e0001', 'wanglan', '1992-02-04', 'jingli', 8000, 'd0001'); |
6,添加用到的用户:
1 | ## 添加数据库用户:wanglan |
到这里先前的准备工作就做完了…
¶题目解答
这里再次贴一下题目内容吧:
(1) 允许 WangLan 对两个关系进行任何操作, 并可以将他的权限转授他人。
1 | grant all privileges on emp.* to wanglan@localhost identified by 'wanglan123' with grant option; |
(2) 允许所有用户查询 Department 关系。
1 | grant select on emp.department to public; |
(3) 允许所有用户查询 Employee 关系的 Salary 属性进行修改。
1 | ## 我们需要在 employee 上创建一个视图 emp_view: |
(4) 允许 LiYong 对 Employee 关系的 Salary 属性进行修改。
1 | ## 注意, 更新用户权限后,应该刷新一下权限列表: |
(5) 允许 ShangHua 查询每个部门的最低、最高和平均工资。
1 | ## 我们需要在 employee 上创建一个视图 deptsalary: |
(6) 定义一个角色 Secretary,可以对 Department 进行任何操作,对 Employee
除了不能修改 Salary 属性值之外,可以进行任何操作。
1 | ## 首先创建一个角色 Secretary: |
(7) LiHua 是秘书,拥有角色 Secretary 的权限。
1 | GRANT Secretary TO Lihua; |
(8) 回收(1) - (4)的权限。
1 | revoke all privileges on emp.* from wanglan@localhost; |
(9) 不允许角色 Secretary 修改 Employee 的 Title 属性值。
1 | ## SQL SERVICE版写法 |
¶参考资料
[1]. http://www.blogjava.net/etlan/archive/2007/07/12/129794.html
[2]. http://blog.163.com/xychenbaihu@yeah/blog/static/13222965520113353229427/
[3]. http://www.linuxidc.com/Linux/2014-09/107422.htm
[4]. http://www.cnblogs.com/fslnet/p/3143344.html
[5]. http://my.oschina.net/wojibuzhu/blog/229094
[6]. http://www.cnblogs.com/wanghetao/p/3806888.html
[7]. http://www.2cto.com/database/201506/409608.html
[8]. http://database.51cto.com/art/201011/234543.htm
[9]. http://blog.csdn.net/andy_yf/article/details/7487519
@@@@@@ 吃饭喽, 未完待续…