全部產品
Search
文件中心

:帳號許可權管理

更新時間:Jun 19, 2024

本文介紹如何在AnalyticDB PostgreSQL版中管理資料庫帳號許可權。

前提條件

已建立資料庫帳號。詳情請參見建立資料庫帳號

許可權管理

建立完資料庫帳號後,您可以進行以下操作:

  • 通過ALTER ROLE修改資料庫角色。

  • 通過GRANT定義使用者存取權限,或通過REVOKE撤銷存取權限。

  • 通過GRANT對資料庫物件授權。

修改資料庫角色

  • ALTER ROLE樣本如下:

    ALTER ROLE jsmith WITH PASSWORD 'passwd123';
    ALTER ROLE admin VALID UNTIL 'infinity';
    ALTER ROLE jsmith LOGIN;
    ALTER ROLE jsmith RESOURCE QUEUE adhoc;
    ALTER ROLE jsmith DENY DAY 'Sunday';
  • 您也可以設定ROLE層級的服務端配置,例如search_path:

    ALTER ROLE admin SET search_path TO myschema, public;

授權使用者許可權

  • 當CREATE ROLE沒有指定LOGIN屬性時,可視為GROUP(組),使用GROUP可以方便管理一批使用者的許可權。建立一個擁有CREATEROLE和CREATEDB許可權的ROLE(GROUP),叫做admin。樣本如下:

    CREATE ROLE admin CREATEROLE CREATEDB;
  • 添加使用者john和sally到GROUP。樣本如下:

    GRANT admin TO john, sally;
  • 從GROUP中移除使用者bob。樣本如下:

    REVOKE admin FROM bob;
  • 當對GROUP進行資料庫物件授權時,屬於該GROUP的使用者都將繼承該授權。

    GRANT ALL ON TABLE mytable TO admin;
    GRANT ALL ON SCHEMA myschema TO admin;
    GRANT ALL ON DATABASE mydb TO admin;

授權資料庫物件許可權

當資料庫物件(庫,模式,表,視圖,序列,函數等)被建立時,所有許可權歸屬於該對象的建立者(Owner)。預設只有對象Owner和RDS_SUPERUSER有許可權操作該對象。當其他使用者需要相應許可權來操作該對象時,需要授權。下表列出了每種對象的相應許可權。

資料庫物件

許可權

Tables,Views,Sequences

SELECT INSERT UPDATE DELETE RULE ALL

External Tables

SELECT RULE ALL

Databases

CONNECT CREATE TEMPORARY | TEMP ALL

Functions

EXECUTE

Procedural Languages

USAGE

Schemas

CREATE USAGE ALL

重要

每種對象需要單獨授權。例如,對Database進行GRANT ALL並不代表可以訪問該Database內部的表,只是授予了對該Database的CONNECT、CREATE和TEMP許可權。

  • 對mytable授權INSERT給jsmith。樣本如下:

    GRANT INSERT ON mytable TO jsmith;
  • 對table2的col1列授權SELECT給jsmith。樣本如下:

    GRANT SELECT (col1) on TABLE table2 TO jsmith;
  • 從jsmith回收mytable的所有許可權。樣本如下:

    REVOKE ALL PRIVILEGES ON mytable FROM jsmith;
  • 表的Owner或者RDS_SUPERUSER也可以通過如下SQL進行Owner的重新指定或者刪除Owner。

    REASSIGN OWNED BY sally TO bob;
    DROP OWNED BY visitor;