数据库的表、索引、视图等,在数据库中的一切都可以称为数据库对象。
对象分为以下两类
- 模式(SCHEMA)对象:可视为一个表的集合,可以理解为一个存储目录,包含视图、索引、数据类型、函数和操作符等。
- 非模式对象:其他的数据库对象。如数据库、表空间、用户、权限。
查看当前用户在数据库中拥有的权限
\l
查看用户在模式中拥有的权限
\dn+
查看用户对模式对象(以表为例)拥有的权限
\dp
对用户授予对表有插入权限并为其授予转授权
grant 权限 on 模式.表名 to 授权用户 with grant option;
查看表的所有者
\dt+ 表名
改变对象(表)的所有者
alter table 模式.表名 owner to 用户名;
拥有者在对象上的特殊权限不能被授予或撤销
DROP、GRANT、REVOKE等特殊权限总是隐式地属于拥有者,不能直接查询到这些权限信息,也不能被授予或撤销。
所有者可以撤销他自己在表中普通权限
撤销用户在表上的所有普通权限
revoke ALL on 模式.表 from 用户;
重新对用户授予查询表的权限
grant 权限 on 模式.表 to 用户;
然后重新查询表的权限
授权用户访问库的权限
grant CONNECT on DATABASE 库名 to 用户;
查看数据库的权限列表
授权用户访问模式的权限
grant USAGE on SCHEMA 模式名 to 用户名;
\dn+ 模式 #查看模式的权限列表
授予用户访问表的权限
grant 权限 on TABLE 模式.表名 to 用户名;
\dp+ 表名
上图显示授予了查询权限给user03用户
收回public角色在数据库和public模式中的默认权限
在KES V8R3中public角色默认拥有登录所有数据库、能在public模式中创建对象的权限。
测试,创建user04用户,然后直接登录数据库test
结论:用户默认能登陆test数据库和在public模式中创建对象
注意:所有用户默认属于public角色。
查看和验证public角色拥有的默认权限
查看public角色在某个数据库的权限
\l 数据库名
查看public角色在public模式中的权限
\dn+ 模式名
收回public角色在test数据库的默认权限
revoke ALL on DATABASE 数据库名 from PUBLIC ;
结论:收回默认权限后,已经不能登录数据库
收回public角色在public模式中的默认权限
revoke ALL on SCHEMA 模式名 from 角色所属模式名 ;
验证:收回权限后已经无法在public模式中创建表了。
权限描述符概述
详解“user01=ar*/SYSTEM”