数据库实验六--OpenGauss(安全性控制)
实验要求
- 创建一些数据库用户,并理解数据库用户和角色之间的关系。
- 利用查询分析器熟悉通过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;
本文来自作者:CK_0ff,转载请注明原文链接:https://www.cnblogs.com/Ck-0ff/p/16203108.html