定义访问特权。
语法
GRANT { { SELECT | INSERT | UPDATE | DELETE | REFERENCES }
[,...] | ALL [ PRIVILEGES ] }
ON tablename
TO { username | groupname | PUBLIC } [, ...]
[ WITH GRANT OPTION ]
GRANT { { INSERT | UPDATE | REFERENCES } (column [, ...]) }
[, ...]
ON tablename
TO { username | groupname | PUBLIC } [, ...]
[ WITH GRANT OPTION ]
GRANT { SELECT | ALL [ PRIVILEGES ] }
ON sequencename
TO { username | groupname | PUBLIC } [, ...]
[ WITH GRANT OPTION ]
GRANT { EXECUTE | ALL [ PRIVILEGES ] }
ON FUNCTION progname
( [ [ argmode ] [ argname ] argtype ] [, ...] )
TO { username | groupname | PUBLIC } [, ...]
[ WITH GRANT OPTION ]
GRANT { EXECUTE | ALL [ PRIVILEGES ] }
ON PROCEDURE progname
[ ( [ [ argmode ] [ argname ] argtype ] [, ...] ) ]
TO { username | groupname | PUBLIC } [, ...]
[ WITH GRANT OPTION ]
GRANT { EXECUTE | ALL [ PRIVILEGES ] }
ON PACKAGE packagename
TO { username | groupname | PUBLIC } [, ...]
[ WITH GRANT OPTION ]
GRANT role [, ...]
TO { username | groupname | PUBLIC } [, ...]
[ WITH ADMIN OPTION ]
GRANT { CONNECT | RESOURCE | DBA } [, ...]
TO { username | groupname } [, ...]
[ WITH ADMIN OPTION ]
GRANT CREATE [ PUBLIC ] DATABASE LINK
TO { username | groupname }
GRANT DROP PUBLIC DATABASE LINK
TO { username | groupname }
GRANT EXEMPT ACCESS POLICY
TO { username | groupname }
说明
GRANT
命令具有三种基本变化形式:一种授予对数据库对象(表、视图、序列或程序)的特权,一种授予角色中的成员资格,还有一种授予系统特权。这些变化形式虽然在多个方面彼此相似,但仍存在较大差异并需要单独说明。
在PolarDB PostgreSQL版(兼容Oracle)中,用户和组的概念已经统一为名为角色的单个实体类型。在这种情况下,用户是指具有 LOGIN
属性的角色,可以使用角色创建会话并连接到应用程序。组是指不具有 LOGIN
属性的角色,不能使用角色创建会话或连接到应用程序。
角色可以是一个或多个其他角色的成员,因此用户属于组成员的传统概念仍然有效。不过,宽泛地提到用户和组时,用户可能“属于”用户,组可能“属于”组,而且组可能“属于”用户,从而形成常规的多级角色层次结构。用户名称和组名称共享同一命名空间,因此在 GRANT
命令中无需区分被授权者是用户还是组。