在 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器中管理使用者

本文說明如何在 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器中建立使用者。

想了解如何建立和管理 Azure 訂閱使用者及其權限,請參閱 Azure 角色基礎存取控制(Azure RBAC)文章或回顧如何自訂角色

伺服器系統管理員帳戶

當你第一次建立 適用於 PostgreSQL 的 Azure 資料庫 靈活伺服器時,你必須提供伺服器管理員的使用者名稱和密碼。 如需詳細資訊,請參閱 建立適用於 PostgreSQL 的 Azure 資料庫, 以查看逐步方法。 因為伺服器管理員的使用者名稱是自訂的,你可以從 Azure 入口網站找到所選的伺服器管理員使用者名稱。

適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器是以三個預設角色定義建立的。 您可以執行以下命令來查看這些角色: SELECT rolname FROM pg_roles;

  • azure_pg_admin
  • azuresu
  • 您的伺服器管理員帳戶

您的伺服器管理員使用者是 azure_pg_admin 角色的成員。 不過,伺服器系統管理員帳戶不是 azuresu 角色的一部分。 由於此服務是受控 PaaS 服務,因此只有 Microsoft 是超級使用者角色的一部分。

PostgreSQL 引擎使用權限來控制對資料庫物件的存取,如 PostgreSQL 產品文件中所述。 在適用於 PostgreSQL 的 Azure 資料庫中,伺服器系統管理員使用者會獲授與下列許可權:

  • 登入, NOSUPERUSER, INHERIT, CREATEDB, CREATEROLE

使用伺服器管理員使用者帳號建立更多使用者,並授予這些使用者azure_pg_admin角色。 另外,利用伺服器管理員帳號建立權限較低的使用者和角色,讓他們能存取個別資料庫和架構。

如何在適用於 PostgreSQL 的 Azure 資料庫中建立更多系統管理員使用者

  1. 取得連線資訊和管理員使用者名稱。 你需要完整的伺服器名稱和管理員登入憑證,才能連接到你的 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器。 您可以從 Azure 入口網站中的 [伺服器 概觀 ] 頁面或 [ 屬性 ] 頁面輕鬆找到伺服器名稱和登入資訊。

  2. 使用管理員帳號和密碼連接你的 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器。 使用您偏好的用戶端工具,例如 pgAdmin 或 psql。 如果您不確定如何連線,請參閱 建立適用於 PostgreSQL 的 Azure 資料庫

  3. 編輯並執行下列 SQL 程式碼。 將你的新使用者名稱替換成佔位值 <new_user>,並將佔位密碼替換成你自己的強密碼。

    CREATE USER <new_user> CREATEDB CREATEROLE PASSWORD '<StrongPassword!>';
    
    GRANT azure_pg_admin TO <new_user>;
    

如何在適用於 PostgreSQL 的 Azure 資料庫中建立資料庫使用者

  1. 取得連線資訊和管理員使用者名稱。 你需要完整的伺服器名稱和管理員登入憑證,才能連接到你的 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器。 您可以從 Azure 入口網站中的 [伺服器 概觀 ] 頁面或 [ 屬性 ] 頁面輕鬆找到伺服器名稱和登入資訊。

  2. 使用管理員帳號和密碼連接你的 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器。 使用您偏好的用戶端工具,例如 pgAdmin 或 psql。

  3. 編輯並執行下列 SQL 程式碼。 將預留位置值 <db_user> 取代為您想要的新使用者名稱,並將預留位置值 <newdb> 取代為您自己的資料庫名稱。 請以您自己的高強度密碼取代預設密碼。

    這段 SQL 程式碼會建立一個新的資料庫,然後在 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器中建立新使用者,並授予該使用者對該新資料庫的連線權限。

    CREATE DATABASE <newdb>;
    
    CREATE USER <db_user> PASSWORD '<StrongPassword!>';
    
    GRANT CONNECT ON DATABASE <newdb> TO <db_user>;
    
  4. 使用管理員帳戶時,您可能需要授與其他權限,以保護資料庫中的物件。 請參閱 PostgreSQL文件 ,以取得資料庫角色和權限的詳細資訊。 例如:

    GRANT ALL PRIVILEGES ON DATABASE <newdb> TO <db_user>;
    

    如果使用者建立資料表「角色」,則該資料表屬於該使用者。 如果其他使用者需要存取表格,您必須在表格層次上將權限授與其他使用者。

    例如:

    GRANT SELECT ON ALL TABLES IN SCHEMA <schema_name> TO <db_user>;
    
  5. 使用新的使用者名稱和密碼登入您的伺服器,並指定所指定的資料庫。 此範例顯示 psql 命令列。 使用此命令時,系統會提示您輸入使用者名稱的密碼。 取代您自己的伺服器名稱、資料庫名稱和使用者名稱。

    psql --host=mydemoserver.postgres.database.azure.com --port=5432 --username=db_user --dbname=newdb