本文由簡體中文內容自動轉碼而成。阿里雲不保證此自動轉碼的準確性、完整性及時效性。本文内容請以簡體中文版本為準。

帳號許可權詳情

更新時間:2024-06-18 22:55

本文介紹RDS PostgreSQL高許可權帳號和普通帳號的許可權詳情。

許可權說明

重要

為了保障資料庫的安全和穩定性,RDS PostgreSQL中的資料庫帳號未被授予對pg_authid表的存取權限。您可以通過使用pg_roles視圖來查詢資料庫角色的資訊。

普通帳號

RDS PostgreSQL的普通帳號許可權和社區的非superuser帳號的許可權相同。具體請參見PostgreSQL官方文檔

高許可權帳號

RDS PostgreSQL的高許可權帳號除了支援普通帳號的所有許可權外,還支援以下許可權:

  • 在兩階段交易認可中,可以完成任何已準備的事務。

    說明
    • 當涉及到多個資料庫或系統之間的交易處理時,為了確保資料的一致性,常常使用兩階段交易認可(Two-Phase Commit)協議。這個協議確保所有相關的事務要麼全部提交(完成),要麼全部復原(取消)。

    • 更多資訊,請參見SQL PREPARE TRANSACTION

  • 手動調用VACUUM相關命令,支援清理任何錶。

    說明

    Vacuum是用於回收已刪除行所佔用的磁碟空間,並更新統計資料的過程。更多資訊,請參見VACUUM

    SQL樣本

    • 執行VACUUM操作,清理當前資料庫中的所有表。在執行VACUUM命令時,會使用預設的VACUUM配置參數。

      VACUUM;
    • 執行VACUUM FULL操作,對當前資料庫中的所有表進行徹底的清理。VACUUM FULL操作會重新組織表的實體儲存體並釋放未使用的磁碟空間。它可能需要更長的時間和更多的系統資源。

      VACUUM FULL;
    • 針對特定的表進行VACUUM操作。更精確地控制哪些表需要進行VACUUM,對不同的表使用不同的VACUUM配置參數。

      VACUUM FULL <table_name>;

      table_name指具體表名。

  • 使用CREATE EVENT TRIGGER建立事件觸發程序(Event trigger),或將事件觸發程序的所有者改為自己。

    說明

    事件觸發程序的更多資訊,請參見CREATE EVENT TRIGGER

    SQL樣本

    • 建立事件觸發程序

      樣本情境:建立一個名為test_trigger的事件觸發程序,在DDL命令(CREATE、ALTER、DROP 等)完成時觸發,調用名為test_function()的函數。

      CREATE EVENT TRIGGER test_trigger
      ON ddl_command_end
      EXECUTE FUNCTION test_function();
    • 修改事件觸發程序所有者。

      ALTER EVENT TRIGGER test_trigger OWNER TO new_owner;

      new_owner:修改後事件觸發程序的所有者。

  • 使用CREATE EXTENSION建立外掛程式。支援的外掛程式請參見支援外掛程式列表

    SQL樣本

    CREATE EXTENSION <外掛程式名>;
  • 建立函數時為函數指定LEAKPROOF屬性,或修改函數的LEAKPROOF的屬性。

    說明

    更多資訊,請參見CREATE FUNCTION

    SQL樣本

    CREATE OR REPLACE FUNCTION test_function() 
    RETURNS void 
    LANGUAGE sql 
    LEAKPROOF 
    AS $$
    -- 函數的實現代碼
    $$;
  • 使用CREATE PUBLICATION建立發布,或修改一個發布的所有者。

    說明

    在PostgreSQL中,建立發布(publication)是通過邏輯複製功能來實現的,允許將資料庫的更改操作傳輸到其他資料庫執行個體。

    SQL樣本

    • 建立發布。僅為樣本,詳細使用方法,請參見CREATE PUBLICATION

      CREATE PUBLICATION test_publication FOR ALL TABLES;
    • 修改一個發布的所有者。

      ALTER PUBLICATION <publication_name> OWNER TO <new_owner>;
  • 使用CREATE SUBSCRIPTION建立訂閱,或修改一個訂閱的所有者。

    說明

    在PostgreSQL中,您可以通過邏輯複製功能建立訂閱(subscription)。訂閱允許將來自發布(publication)的更改應用到訂閱資料庫。

    SQL樣本

    • 建立訂閱。僅為樣本,詳細使用方法,請參見CREATE SUBSCRIPTION

      CREATE SUBSCRIPTION test_subscription
        CONNECTION 'host=<發布端串連地址> port=<發布端連接埠> dbname=<資料庫> user=<帳號> password=<密碼>'
        PUBLICATION test_publication
        WITH (slot_name = <replication_slot_name>, create_slot = false);

      test_publication為發布端的發布名稱。

    • 修改一個訂閱的所有者。

      ALTER SUBSCRIPTION <subscription_name> OWNER TO <new_owner>;
  • 使用文本搜尋(text search)功能,進行全文檢索搜尋和文本匹配操作。更多資訊,請參見Full Text Search

  • 修改資料類型的所有者。

    SQL樣本

    ALTER TYPE <type_name> OWNER TO <new_owner>;
  • 建立高許可權帳號,或者修改其他普通帳號為高許可權帳號。

    SQL樣本

    -- 建立帳號
    CREATE USER <user_name> WITH PASSWORD '<帳號密碼>';
    -- 修改帳號為高許可權帳號
    GRANT pg_rds_superuser TO <user_name>;
  • 查看高許可權帳號和所有普通帳號的後端進程,並支援對進程使用pg_terminate_backend()等函數。

    SQL樣本

    -- 查詢某個帳號下的所有後端進程
    SELECT pid, datname, usename, application_name
    FROM pg_stat_activity
    WHERE usename = '<高許可權帳號或普通帳號>';
    
    -- 執行pg_terminate_backend()函數,終止進程
    SELECT pg_terminate_backend(pid);
  • 從視圖pg_stat_activity中擷取高許可權帳號和所有普通帳號的後端串連資訊。

    SQL樣本

    SELECT *
    FROM pg_stat_activity
    WHERE usename = '<高許可權帳號或普通帳號>';
  • 對普通帳號的對象執行GRANTREVOKE操作。更多資訊,請參見GRANTREVOKE

    SQL樣本

    -- 使用GRANT命令授權,使普通帳號能夠執行DELETE語句來刪除表中的行資料
    GRANT DELETE ON <table_name> TO <user_name>;
    
    -- 使用REVOKE命令撤銷許可權
    REVOKE DELETE ON <table_name> FROM <user_name>;
  • 使用SET ROLE將當前會話的帳號(即高許可權帳號)許可權變更為指定普通帳號的許可權。

    SQL樣本

    SET ROLE <普通帳號>;

相關參考

如果您需要對帳號許可權進行精細化管理,請參見RDS PostgreSQL許可權管理最佳實務

  • 本頁導讀 (1, M)
  • 許可權說明
  • 普通帳號
  • 高許可權帳號
  • 相關參考
文檔反饋