本文說明如何在適用於 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 資料庫中建立更多系統管理員使用者
取得連線資訊和管理員使用者名稱。 您需要完整的伺服器名稱和系統管理員登入認證,才能連線到適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體。 您可以從 Azure 入口網站中的 [伺服器 概觀 ] 頁面或 [ 屬性 ] 頁面輕鬆找到伺服器名稱和登入資訊。
使用系統管理員帳戶和密碼連線到適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體。 使用您偏好的用戶端工具,例如 pgAdmin 或 psql。 如果您不確定如何連線,請參閱 建立適用於 PostgreSQL 的 Azure 資料庫。
編輯並執行下列 SQL 程式碼。 將新的使用者名稱取代為new_user<的預留位置值>,並將預留位置密碼取代為您自己的強式密碼。
CREATE USER <new_user> CREATEDB CREATEROLE PASSWORD '<StrongPassword!>'; GRANT azure_pg_admin TO <new_user>;
如何在適用於 PostgreSQL 的 Azure 資料庫中建立資料庫使用者
取得連線資訊和管理員使用者名稱。 您需要完整的伺服器名稱和系統管理員登入認證,才能連線到適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體。 您可以從 Azure 入口網站中的 [伺服器 概觀 ] 頁面或 [ 屬性 ] 頁面輕鬆找到伺服器名稱和登入資訊。
使用系統管理員帳戶和密碼連線到適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體。 使用您偏好的用戶端工具,例如 pgAdmin 或 psql。
編輯並執行下列 SQL 程式碼。 將預留位置值
<db_user>取代為您想要的新使用者名稱,並將預留位置值<newdb>取代為您自己的資料庫名稱。 將預留位置密碼替換為您自己的強密碼。下列此 SQL 程式碼會建立新的資料庫,然後在適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體中建立新的使用者,並為該使用者授與新資料庫的連線許可權。
CREATE DATABASE <newdb>; CREATE USER <db_user> PASSWORD '<StrongPassword!>'; GRANT CONNECT ON DATABASE <newdb> TO <db_user>;使用管理員帳戶時,您可能需要授與其他權限,以保護資料庫中的物件。 請參閱 PostgreSQL文件 ,以取得資料庫角色和權限的詳細資訊。 例如:
GRANT ALL PRIVILEGES ON DATABASE <newdb> TO <db_user>;如果使用者建立資料表「角色」,則該資料表屬於該使用者。 如果其他使用者需要存取表格,您必須在表格層次上將權限授與其他使用者。
例如:
GRANT SELECT ON ALL TABLES IN SCHEMA <schema_name> TO <db_user>;使用新的使用者名稱和密碼登入您的伺服器,指定指定的資料庫。 此範例顯示 psql 命令列。 使用此命令時,系統會提示您輸入使用者名稱的密碼。 取代您自己的伺服器名稱、資料庫名稱和使用者名稱。
psql --host=mydemoserver.postgres.database.azure.com --port=5432 --username=db_user --dbname=newdb