第四章第一次作业
第四章第一次作业
- 教材上的例程 4.1-4.7
- 例题验证
- [例 4.1] 把查询Student表权限授给用户U1
- [例 4.2] 把对Student表和Course表的全部权限授予用户U2和U3
- [例 4.3] 把对表SC的查询权限授予所有用户
- [例 4.4] 把查询Student表和修改学生学号的权限授给用户U4
- [例 4.5] 把对表SC的INSERT权限授予U5用户,并允许他再将此权限授予其他用户
- [例 4.6] 传播权限
- [例 4.7] 传播权限
- 问题及解决
- 例题验证
- 教材上的例程[例4.8]、[例4.9]、[例4.10]
- 例题验证
- [例 4.8] 把用户U4修改学生学号的权限收回
- [例 4.9] 收回所有用户对表SC的查询权限
- [例 4.10] 把用户U5对SC表的INSERT权限收回
- 问题及解决
- 例题验证
- 教材上的例程[例4.11]、[例4.12]、[例4.13]
- 例题验证
- [例 4.11] 通过角色来实现将一组权限授予一个用户
- [例 4.12]-[例 4.13] 角色的权限修改
- 问题及解决
- 例题验证
教材上的例程 4.1-4.7
在openGauss上创建用户并进行授权,描述验证的过程
依次创建用户:
CREATE USER U1 IDENTIFIED BY 'user@123';
CREATE USER U2 IDENTIFIED BY 'user@123';
CREATE USER U3 IDENTIFIED BY 'user@123';
CREATE USER U4 IDENTIFIED BY 'user@123';
CREATE USER U5 IDENTIFIED BY 'user@123';
CREATE USER U6 IDENTIFIED BY 'user@123';
CREATE USER U7 IDENTIFIED BY 'user@123';
创建成功,如图:

例题验证
[例 4.1] 把查询Student表权限授给用户U1
grant usage on schema dboper to u1;
grant select on table dboper.student to u1;
授权成功!

如图,可以查询student表

查询score表则失败

[例 4.2] 把对Student表和Course表的全部权限授予用户U2和U3
GRANT ALL PRIVILEGES
ON TABLE Student, Course
TO u2, u3;
验证:
1.在u2用户下,给student表插入数据
INSERT INTO dboper.student(sno,sname,ssex,sdept,sage)
VALUES('20201329','我是','女','IS',20);

2.在u3用户下,修改学生数据
UPDATE dboper.student
SET ssex='女'
WHERE sno='201215129';

[例 4.3] 把对表SC的查询权限授予所有用户
GRANT SELECT
ON TABLE SC
TO PUBLIC;
验证:
用用户u4查询sc表中数据
select cno from dboper.sc;

[例 4.4] 把查询Student表和修改学生学号的权限授给用户U4
GRANT UPDATE(Sno), SELECT
ON TABLE Student
TO U4;
验证:
用户u4修改学生学号成功
UPDATE dboper.student
SET sno='20202020'
WHERE sno='20202024';

[例 4.5] 把对表SC的INSERT权限授予U5用户,并允许他再将此权限授予其他用户
GRANT INSERT
ON TABLE SC
TO u5
WITH GRANT OPTION;
验证:
用户u5在sc表中插入数据成功
INSERT
INTO dboper.sc
VALUES('20201329','0204',50);

u5可以将这个权限传递给其他用户u6
GRANT INSERT
ON TABLE SC
TO u6
WITH GRANT OPTION;

用户u6在sc表中插入数据成功:
INSERT
INTO dboper.sc
VALUES('20201329','1',99);

[例 4.6] 传播权限
用户u6将此权限传递给u4
GRANT INSERT
ON TABLE dboper.SC
TO u4;
WITH GRANT OPTION;
验证:
用户u4可以在sc表中插入数据成功
INSERT
INTO dboper.sc
VALUES('20201329','0209',88);

[例 4.7] 传播权限
GRANT INSERT
ON TABLE dboper.SC
TO u7;
用户u6将修改数据的权限传递给用户u7,但没有给u7传播权限,因此u7不能再传播这个权限

问题及解决
1.实验上手直接输入例题1代码显示错误,没有事先创建用户。

解决:先根据树上的用户数量创建好需要的用户,并且设置密码,再输入代码进行设置权限。

2.创建用户设置密码时,没有使用三种不同类型的字符类型
3.将查询权限赋给u1时,输入grant select on table dboper.student to u1;报错。
经过同学提醒,必须把schema也赋权给用户,否则直接grant是无效的
grant usage on schema dboper to u1;
同理,schema也要赋权给其他用户

教材上的例程[例4.8]、[例4.9]、[例4.10]
在openGauss上收回部分用户的权限,描述验证的过程
例题验证
[例 4.8] 把用户U4修改学生学号的权限收回
[例 4.9] 收回所有用户对表SC的查询权限
[例 4.10] 把用户U5对SC表的INSERT权限收回
问题及解决
教材上的例程[例4.11]、[例4.12]、[例4.13]
在openGauss上进行角色部分内容的验证,描述验证的过程