数据库实验六--OpenGauss(安全性控制)

实验要求

  1. 创建一些数据库用户,并理解数据库用户和角色之间的关系。
  2. 利用查询分析器熟悉通过SQL对数据进行安全性控制(grant和revoke语句)。

连接数据库

先连接并进入数据库

su - omm
gs_om -t start
gsql -d postgres -p 26000 -r

我们这里是采用gsql连接数据库,默认为管理员权限。

定义用户、权限授权

使用select * from pg_user;可以查看当前已有的用户信息:
在这里插入图片描述
我们创建一个用户,命名为test,密码为OpenGauss@123

CREATE USER test PASSWORD 'OpenGauss@123';

在这里插入图片描述

对用户test进行授权
例:
授予test可以查询departmrnt表的权力:

grant select on departments to test ;

在这里插入图片描述
把表students的更新sname权限和插入数据对test开放

grant insert,update(sname) on table students to test;

在这里插入图片描述
把查询students的表权限对所用用户开放

grant select on students to public;

在这里插入图片描述
我们可以查看对应表的各个权限的使用情况

SELECT * FROM information_schema.table_privileges WHERE table_name='students';

在这里插入图片描述
注意到这里students的权限中已经加上了test和public。

权限收回

收回权限使用REVOKE指令

我们现在收回test的权限

revoke insert on table students from test;

之后仍然查询权限情况

SELECT * FROM information_schema.table_privileges WHERE table_name='students';

在这里插入图片描述
注意到insert权限已经被收回。

定义角色、权限授权

角色是一个命名的权限的集合。当一组用户必须使用相同的存取权限的时候,使用角色定义存取权限,并对用户授权是方便的。
创建角色

create role <角色名> password xxxx;

创建 一个名为instructor的角色

create role instructor password 'OpenGauss@123';

在这里插入图片描述
我们为instructor这个角色添加students表的所有权限

GRANT ALL PRIVILEGES ON students TO instructor;

在这里插入图片描述
我们这个时候来检查一下权限

在这里插入图片描述
然后把instructor这个角色赋给test用户

grant instructor to test with admin option;

with admin option表示可以传播角色授权

在这里插入图片描述

收回角色

我们可以同样可以使用revoke收回权限
收回角色

revoke instructor from test;

在这里插入图片描述
收回角色的权限

revoke all privileges on students from instructor;

在这里插入图片描述

在这里插入图片描述

posted @ 2022-04-28 15:40  CK_0ff  阅读(324)  评论(0编辑  收藏  举报