定义访问特权。

语法

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 命令中无需区分被授权者是用户还是组。