1.对象关系管理
--对象权限-授权与回收
授予权限使用GRANT,回收权限使用REVOKE;
2.对象权限管理演示
--表的对象权限。
GRANT SELECT ON SJZT.TEST1 TO USER1;
GRANT INSERT ON SJZT.TEST1 TO USER1;
GRANT UPDATE ON SJZT.TEST1 TO USER1;
GRANT DELETE ON SJZT.TEST1 TO USER1;
GRANT TRUNCATE ON SJZT.TEST1 TO USER1;
GRANT REFERENCES ON SJZT.TEST1 TO USER1;
GRANT ALTER ON SJZT.TEST1 TO USER1;
GRANT DROP ON SJZT.TEST1 TO USER1;
GRANT COMMENT ON SJZT.TEST1 TO USER1;
GRANT INDEX ON SJZT.TEST1 TO USER1;
GRANT VACUUM ON SJZT.TEST1 TO USER1;
--DATABASE,SCHEMA,FUNC/PROC 的对象权限。
GRANT CREATE ON SCHEMA SJZT TO USER1; --schema里面创建对象权限。
GRANT CONNECT ON DATABASE SJZT TO USER1;--连接某个数据库的权限。
GRANT EXECUTE ON SJZT.FUN/SJZT.PROC(存储过程或函数) TO USER1; --对某个存储过程和函数的执行权限。
GRANT USAGE ON SCHEMA SJZT TO USER1; --授予对于某个schema的登陆权限。
GRANT SELECT ON TABLE SJZT.TEST1 TO USER1 WITH GRANT OPTION;
3.查看对象权限
--查看系统表pg_class的 relacl 字段获取表相关的授权信息。
sjzt=> select relacl from pg_class where relname='test1';
relacl
---------------------------------------------------------
{sjzt=arwdDxt/sjzt,user1=ar*wdDx/sjzt,user1=APmiv/sjzt}
--可以看到:sjzt用户对表SJZT.TEST1的权限有:arwdDxt
a:INSERT
r:SELECT
w:UPDATE
d:DELETE
D:TRUNCATE
x:REFERENCES
t:TRIGGER
--user1用户对表:sjzt.test1的权限有:arwdDx / APmiv
a:INSERT
r*:SELECT ,*表示还可以将SELECT授予别人。
w:UPDATE
d:DELETE
D:TRUNCATE
x:REFERENCES
A:ALTER
P:DROP
m:COMMENT
i:INDEX
v:VACUUM
4.对象权限说明
--参数 参数说明 参数 参数说明
r:SELECT
C:CREATE
w:UPDATE
c:CONNECT
a:INSERT
T:TEMPORARY
d:DELETE
A:ALTER
D:TRUNCATE
P:DROP
x:REFERENCES
m:COMMENT
t:TRIGGER
i:INDEX
X:EXECUTE
v:VACUUM
U:USAGE
*:再授权选项
我们可以通过当前模式下:pg_class 表查看 test1表,有哪些用户对他有哪些权限。
5.总结
relcal :列所展示的展示的都是权限的简称,所以我们需要熟记GaussDB里面这些简称每个代表的含义。这样才能快速查看表的权限问题。