全部產品
Search
文件中心

PolarDB:系統許可權

更新時間:Oct 21, 2025

Oracle資料庫遷移或進行大規模許可權管理時,逐個為使用者授予對象或Schema的存取權限操作繁瑣。為簡化此過程,PolarDB提供相容Oracle風格的系統許可權(SYSTEM PRIVILEGE)體系。通過單條命令,可為使用者授予對某一類對象(如所有表、所有視圖)的全域操作許可權,從而提升資料庫營運和管理效率。

適用範圍

您的PolarDB PostgreSQL版(相容Oracle)叢集的修訂版本需為2.0.14.18.37.0及以上

說明

您可在控制台查看核心小版本號碼,也可以通過SHOW polardb_version;語句查看。如未滿足核心小版本要求,請升級核心小版本

啟用並使用系統許可權

以下流程介紹如何完成從啟用功能、建立使用者、授予許可權到最終驗證的全過程。

步驟一:啟用系統許可權功能

系統許可權功能預設關閉,使用前需前往PolarDB控制台配置與管理 > 參數配置頁面來開啟polar_enable_system_privilege參數

步驟二:授予系統許可權

前置條件

僅支援以下三類使用者執行GRANT系統許可權的語句:

  • 高許可權帳號

  • 被授予GRANT ANY PRIVILEGE許可權的普通帳號

  • 被授予某項系統許可權且帶有WITH ADMIN OPTION普通帳號(僅能轉授其擁有的該項許可權)。

文法說明

GRANT sys_priv1 [, sys_priv2 ...] TO my_user_or_role1 [, my_user_or_role2 ...] [ WITH ADMIN OPTION ];
  • 一次可以對一到多個使用者或角色授予一到多種系統許可權。

  • 系統許可權sys_priv有多種許可權種類可以選擇,具體的許可權種類及其作用,請參考系統許可權

  • 如果指定WITH ADMIN OPTION選項,則被授權的使用者或角色可以將該許可權繼續授權給其他使用者或角色,意味著該許可權可以傳播。

使用樣本

為開發人員dev_user授予在任何Schema下建立表和查詢任何錶的許可權。

  1. 建立一個用於測試的普通帳號

    CREATE USER dev_user WITH PASSWORD 'Your_Secure_Password123';
  2. dev_user授予跨Schema建立表和查詢表的系統許可權。

    GRANT CREATE ANY TABLE, SELECT ANY TABLE TO dev_user;
  3. (可選)如果希望dev_user也能將這些許可權授予其他使用者,可在授權時附加 WITH ADMIN OPTION

    -- 授予 dev_user 許可權,並允許其將這些許可權轉授給其他使用者
    GRANT CREATE ANY TABLE, SELECT ANY TABLE TO dev_user WITH ADMIN OPTION;

步驟三:驗證許可權生效

確認dev_user已獲得預期的許可權。

  1. 使用dev_user帳號重新串連資料庫。

  2. 嘗試在一個非同名Schema下建立表並插入資料。

    CREATE TABLE public.my_test_table (id INT);
    INSERT INTO public.my_test_table VALUES (1);
  3. 嘗試查詢該表,驗證 SELECT ANY TABLE 許可權。

    SELECT * FROM public.my_test_table;

    預期返回結果:

     id 
    ----
      1

如果以上操作均成功執行,說明系統許可權已正確生效。

步驟四:管理與查詢許可權

查看或撤銷已授予的系統許可權。

查詢許可權

  • 使用DBA_SYS_PRIVS視圖查詢所有使用者擁有的系統許可權。

    說明

    查詢特定使用者時,需將指定使用者名稱轉換為全大寫形式。

    -- 由高許可權帳號執行
    SELECT GRANTEE, PRIVILEGE, ADMIN_OPTION FROM DBA_SYS_PRIVS WHERE GRANTEE = 'DEV_USER';

    預期返回結果如下:

     grantee  |    privilege     | admin_option 
    ----------+------------------+--------------
     DEV_USER | CREATE ANY TABLE | YES
     DEV_USER | SELECT ANY TABLE | YES
  • 使用USER_SYS_PRIVS視圖查看目前使用者擁有的系統許可權。

    -- 由 dev_user 執行
    SELECT PRIVILEGE, ADMIN_OPTION FROM USER_SYS_PRIVS;

    預期返回結果如下:

        privilege     | admin_option 
    ------------------+--------------
     CREATE ANY TABLE | YES
     SELECT ANY TABLE | YES

查詢結果中,grantee是被授權的使用者或角色,privilege 是許可權名稱,admin_optionYES表示該許可權可被轉授。

回收許可權

文法說明

REVOKE sys_priv1 [, sys_priv2 ...] FROM my_user_or_role1 [, my_user_or_role2 ...];

使用樣本

使用REVOKE命令從使用者處收回系統許可權。

-- 由高許可權帳號執行
REVOKE CREATE ANY TABLE, SELECT ANY TABLE FROM dev_user;

系統許可權

下表列出PolarDB支援的系統許可權及其作用。

類別

許可權名

授權的操作

DATABASE LINKS

CREATE DATABASE LINKCREATE PUBLIC DATABASE LINK

建立私人或公用DBLink(PolarDB中不區分二者)。

ALTER DATABASE LINKALTER PUBLIC DATABASE LINK

修改私人或公用DBLink(PolarDB中不區分二者)。

DROP PUBLIC DATABASE LINK

刪除私人或公用DBLink。

DIRECTORIES

CREATE ANY DIRECTORY

建立目錄。

INDEXES

CREATE ANY INDEX

在任何使用者Schema中建立索引。

ALTER ANY INDEX

在任何使用者Schema中修改索引。

DROP ANY INDEX

在任何使用者Schema中刪除索引。

MATERIALIZED VIEWS

CREATE MATERIALIZED VIEW

在使用者的同名Schema中建立物化視圖。

CREATE ANY MATERIALIZED VIEW

在任何使用者Schema中建立物化視圖。

ALTER ANY MATERIALIZED VIEW

在任何使用者Schema中修改物化視圖。

DROP ANY MATERIALIZED VIEW

在任何使用者Schema中刪除物化視圖。

OPERATORS

CREATE OPERATOR

在使用者的同名Schema中建立操作符。

CREATE ANY OPERATOR

在任何使用者Schema中建立操作符。

PRIVILEGES

GRANT ANY PRIVILEGE

授予任意系統許可權。

PROCEDURES

CREATE PROCEDURE

在使用者的同名Schema中建立預存程序、函數和包。

CREATE ANY PROCEDURE

在任何使用者Schema中建立預存程序、函數和包。

ROLES & USERS

CREATE ROLECREATE USER

建立使用者或角色(PolarDB中不區分二者許可權校正)。

ALTER ANY ROLEALTER USER

修改使用者或角色。

DROP ANY ROLEDROP USER

刪除使用者或角色。

GRANT ANY ROLE

對使用者或角色執行授權操作。

SEQUENCES

CREATE SEQUENCE

在使用者的同名Schema中建立序列。

CREATE ANY SEQUENCE

在任何使用者Schema中建立序列。

ALTER ANY SEQUENCE

在任何使用者Schema中修改序列。

DROP ANY SEQUENCE

在任何使用者Schema中刪除序列。

SYNONYMS

CREATE SYNONYM

在使用者的同名Schema中建立同義字。

CREATE ANY SYNONYM

在任何使用者Schema中建立同義字。

CREATE PUBLIC SYNONYM

建立公用同義字。

DROP ANY SYNONYM

在任何使用者Schema中刪除同義字。

DROP PUBLIC SYNONYM

刪除公用同義字。

TABLES

CREATE TABLE

在使用者的同名Schema中建立表。

CREATE ANY TABLE

在任何使用者Schema中建立表。

ALTER ANY TABLE

在任何使用者Schema中修改表或視圖。

DROP ANY TABLE

在任何使用者Schema中刪除表或截斷(TRUNCATE)表。

COMMENT ANY TABLE

在任何使用者Schema中為表、視圖和物化視圖添加評論資訊。

SELECT ANY TABLE

在任何使用者Schema中查詢表、視圖和物化視圖。

INSERT ANY TABLE

在任何使用者Schema中向表插入資料行。

UPDATE ANY TABLE

在任何使用者Schema中更新表的資料行。

DELETE ANY TABLE

在任何使用者Schema中刪除表的資料行。

TRIGGERS

CREATE TRIGGER

  • 在使用者的同名Schema中建立DML觸發器(實際檢查觸發器所在表的Schema)。

  • 在任何使用者Schema中建立系統觸發器。

CREATE ANY TRIGGER

在任何使用者Schema中建立DML觸發器或系統觸發器。

ADMINISTER DATABASE TRIGGER

建立資料庫層級的系統觸發器(此外仍需CREATE TRIGGERCREATE ANY TRIGGER許可權)。

TYPES

CREATE TYPE

在使用者的同名Schema中建立類型。

CREATE ANY TYPE

在任何使用者Schema中建立類型。

VIEWS

CREATE VIEW

在使用者的同名Schema中建立視圖。

CREATE ANY VIEW

在任何使用者Schema中建立視圖。

DROP ANY VIEW

在任何使用者Schema中刪除視圖。