第四章第一次作业

20201329魏赫 / 2023-05-13 / 原文

第四章第一次作业

目录
  • 教材上的例程 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上进行角色部分内容的验证,描述验证的过程

例题验证

[例 4.11] 通过角色来实现将一组权限授予一个用户

[例 4.12]-[例 4.13] 角色的权限修改

问题及解决