建立及管理使用者

本頁面說明如何啟用並使用 Cloud SQL 內建驗證機制。

如需總覽,請參閱「Cloud SQL 內建資料庫驗證機制」。

建立使用者前

  1. 建立 Cloud SQL 執行個體。詳情請參閱「建立執行個體」。
  2. 為執行個體啟用密碼政策。詳情請參閱「執行個體密碼政策」。
  3. 如果您打算使用資料庫的管理員用戶端來管理使用者,請執行下列操作:

    1. 將用戶端連線至執行個體。請參閱「外部應用程式的連線選項」。

    2. 設定密碼,即可在執行個體上設定預設使用者。請參閱「為預設使用者帳戶設定密碼」。

設定預設使用者帳戶的密碼

建立新的 Cloud SQL 執行個體時,您必須先為預設使用者帳戶設定密碼,才能連線至執行個體。

針對 PostgreSQL 適用的 Cloud SQL,預設使用者是 postgres

控制台

  1. 前往 Google Cloud 控制台的「Cloud SQL 執行個體」頁面。

    前往 Cloud SQL 執行個體

  2. 如要開啟執行個體的「總覽」頁面,請按一下執行個體名稱。
  3. 在 SQL 導覽選單中選取「Users」
  4. 找到 postgres 使用者,然後從「更多動作」選單 更多動作圖示。 中選取「變更密碼」
  5. 提供你能記住的高強度密碼,然後按一下「確定」

gcloud

使用 gcloud sql users set-password 指令,如以下所示,為預設使用者設定密碼。

請先將 INSTANCE_NAME 替換為執行個體名稱,再執行指令。

gcloud sql users set-password postgres \
--instance=INSTANCE_NAME \
--prompt-for-password

REST v1

如要更新預設使用者帳戶的密碼,請使用 PUT 要求搭配 users:update 方法。

使用任何要求資料之前,請先替換以下項目:

  • project-id:您的專案 ID
  • instance-id:所需的執行個體 ID
  • user-id:使用者 ID
  • password:使用者的密碼

HTTP 方法和網址:

PUT https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/users?name=user-id

JSON 要求主體:

{
  "name": "user-id",
  "password": "password"
}

如要傳送要求,請展開以下其中一個選項:

您應該會收到如下的 JSON 回應:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id",
  "status": "DONE",
  "user": "[email protected]",
  "insertTime": "2020-02-07T22:38:41.217Z",
  "startTime": "2020-02-07T22:38:41.217Z",
  "endTime": "2020-02-07T22:38:44.801Z",
  "operationType": "UPDATE_USER",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

REST v1beta4

如要更新預設使用者帳戶的密碼,請使用 PUT 要求搭配 users:update 方法。

使用任何要求資料之前,請先替換以下項目:

  • project-id:您的專案 ID
  • instance-id:所需的執行個體 ID
  • user-id:使用者 ID
  • password:使用者的密碼

HTTP 方法和網址:

PUT https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users?name=user-id

JSON 要求主體:

{
  "name": "user-id",
  "password": "password"
}

如要傳送要求,請展開以下其中一個選項:

您應該會收到如下的 JSON 回應:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
  "status": "DONE",
  "user": "[email protected]",
  "insertTime": "2020-02-07T22:38:41.217Z",
  "startTime": "2020-02-07T22:38:41.217Z",
  "endTime": "2020-02-07T22:38:44.801Z",
  "operationType": "UPDATE_USER",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

新增使用者

設定預設使用者帳戶後,您可以建立其他使用者。

控制台

  1. 前往 Google Cloud 控制台的「Cloud SQL 執行個體」頁面。

    前往 Cloud SQL 執行個體

  2. 如要開啟執行個體的「總覽」頁面,請按一下執行個體名稱。
  3. 在 SQL 導覽選單中選取「Users」
  4. 按一下「新增使用者帳戶」

    在「在執行個體 instance_name 中新增使用者帳戶」頁面,您可以選擇使用者要以內建資料庫方法 (使用者名稱和密碼) 驗證,還是以IAM 使用者身分驗證。

  5. 選取「內建驗證」 (預設),然後新增下列資訊:
    • 「User name」(使用者名稱)
    • (非必要) 「密碼」。請提供您能記住的高強度密碼。
  6. 按一下「新增」。

使用 Cloud SQL 驗證方法在執行個體上建立的使用者會自動獲得 cloudsqlsuperuser 角色,並擁有與此角色相關聯的以下權限:CREATEROLECREATEDBLOGIN

如果您需要變更這些使用者的屬性,請在 psql 用戶端中使用 ALTER ROLE 指令。並非所有屬性都能使用 ALTER ROLE 修改。例外狀況包括 NOSUPERUSERNOREPLICATION 角色。

gcloud

如要建立使用者,請使用 gcloud sql users create 指令。

更改下列內容:

  • USER_NAME:使用者名稱。
  • INSTANCE_NAME:執行個體的名稱。
  • PASSWORD:使用者的密碼。
gcloud sql users create USER_NAME \
--instance=INSTANCE_NAME \
--password=PASSWORD

使用 Cloud SQL 驗證方法在執行個體上建立的使用者會自動獲得 cloudsqlsuperuser 角色,並擁有與此角色相關聯的下列權限:CREATEROLECREATEDBLOGIN

如果您需要變更這些使用者的屬性,請在 psql 用戶端中使用 ALTER ROLE 指令。並非所有屬性都能使用 ALTER ROLE 修改。例外狀況包括 NOSUPERUSERNOREPLICATION 角色。

Cloud SQL 和內部部署 PostgreSQL 的使用者名稱長度限制相同。

建立使用者時,您可以新增使用者密碼政策參數。

Terraform

如要建立使用者,請使用 Terraform 資源

resource "random_password" "pwd" {
  length  = 16
  special = false
}

resource "google_sql_user" "user" {
  name     = "user"
  instance = google_sql_database_instance.instance.name
  password = random_password.pwd.result
}

套用變更

如要在 Google Cloud 專案中套用 Terraform 設定,請完成下列各節中的步驟。

準備 Cloud Shell

  1. 啟動 Cloud Shell
  2. 設定要套用 Terraform 設定的預設 Google Cloud 專案。

    您只需為每個專案執行這個指令一次,而且可以在任何目錄中執行。

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    如果您在 Terraform 設定檔中設定明確的值,系統就會覆寫環境變數。

準備目錄

每個 Terraform 設定檔都必須有自己的目錄 (也稱為根模組)。

  1. Cloud Shell 中建立目錄,並在該目錄中建立新檔案。檔案名稱必須包含 .tf 副檔名,例如 main.tf。在本教學課程中,檔案稱為 main.tf
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. 如果您正在參考教學課程,可以複製各個章節或步驟中的程式碼範例。

    將範例程式碼複製到新建立的 main.tf 中。

    您可以視需要從 GitHub 複製程式碼。如果 Terraform 程式碼片段是端對端解決方案的一部分,建議您採用這種做法。

  3. 查看並修改要套用至環境的範例參數。
  4. 儲存變更。
  5. 初始化 Terraform。這項操作只需對每個目錄執行一次。
    terraform init

    如要使用最新版的 Google 供應器,請視需要加入 -upgrade 選項:

    terraform init -upgrade

套用變更

  1. 檢查設定,並確認 Terraform 要建立或更新的資源是否符合您的預期:
    terraform plan

    視需要修正設定。

  2. 執行下列指令,並在提示中輸入 yes,即可套用 Terraform 設定:
    terraform apply

    等待 Terraform 顯示「Apply complete!」(套用完成) 訊息。

  3. 開啟 Google Cloud 專案即可查看結果。在 Google Cloud 控制台中,前往 UI 中的資源,確認 Terraform 已建立或更新這些資源。

刪除變更

如要刪除變更,請按照下列步驟操作:

  1. 如要停用防刪除功能,請在 Terraform 設定檔中將 deletion_protection 引數設為 false
    deletion_protection =  "false"
  2. 執行下列指令,並在提示中輸入 yes,即可套用更新的 Terraform 設定:
    terraform apply
  1. 如要移除先前透過 Terraform 設定套用的資源,請執行下列指令,並在提示中輸入 yes

    terraform destroy

REST v1

如要建立使用者,請使用 POST 要求搭配 users:insert 方法。

使用任何要求資料之前,請先替換以下項目:

  • project-id:您的專案 ID
  • instance-id:所需的執行個體 ID
  • user-id:使用者 ID
  • password:使用者的密碼

HTTP 方法和網址:

POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/users

JSON 要求主體:

{
  "name": "user-id",
  "password": "password"
}

如要傳送要求,請展開以下其中一個選項:

您應該會收到如下的 JSON 回應:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id",
  "status": "DONE",
  "user": "[email protected]",
  "insertTime": "2020-02-07T22:44:16.656Z",
  "startTime": "2020-02-07T22:44:16.686Z",
  "endTime": "2020-02-07T22:44:20.437Z",
  "operationType": "CREATE_USER",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

使用 Cloud SQL 驗證方法在執行個體上建立的使用者會自動獲得 cloudsqlsuperuser 角色,並擁有與此角色相關聯的下列權限:CREATEROLECREATEDBLOGIN

如果您需要變更這些使用者的屬性,請在 psql 用戶端中使用 ALTER ROLE 指令。並非所有屬性都能使用 ALTER ROLE 修改。例外狀況包括 NOSUPERUSERNOREPLICATION 角色。

Cloud SQL 和內部部署 PostgreSQL 的使用者名稱長度限制相同。

建立使用者時,您可以新增使用者密碼政策參數。

REST v1beta4

如要建立使用者,請使用 POST 要求搭配 users:insert 方法。

使用任何要求資料之前,請先替換以下項目:

  • project-id:您的專案 ID
  • instance-id:所需的執行個體 ID
  • user-id:使用者 ID
  • password:使用者的密碼

HTTP 方法和網址:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users

JSON 要求主體:

{
  "name": "user-id",
  "password": "password"
}

如要傳送要求,請展開以下其中一個選項:

您應該會收到如下的 JSON 回應:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
  "status": "DONE",
  "user": "[email protected]",
  "insertTime": "2020-02-07T22:44:16.656Z",
  "startTime": "2020-02-07T22:44:16.686Z",
  "endTime": "2020-02-07T22:44:20.437Z",
  "operationType": "CREATE_USER",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

使用 Cloud SQL 驗證方法在執行個體上建立的使用者會自動獲得 cloudsqlsuperuser 角色,並擁有與此角色相關聯的以下權限:CREATEROLECREATEDBLOGIN

如果您需要變更這些使用者的屬性,請在 psql 用戶端中使用 ALTER ROLE 指令。並非所有屬性都能使用 ALTER ROLE 修改。例外狀況包括 NOSUPERUSERNOREPLICATION 角色。

Cloud SQL 和內部部署 PostgreSQL 的使用者名稱長度限制相同。

建立使用者時,您可以新增使用者密碼政策參數。

psql 用戶端

  1. psql 提示中建立使用者:
      CREATE USER USER_NAME
          WITH PASSWORD PASSWORD
          ATTRIBUTE1
          ATTRIBUTE2...;
      

    系統出現提示時,輸入密碼。

    如要進一步瞭解角色屬性,請參閱 PostgreSQL 說明文件

  2. 您可以顯示使用者資料表,確認建立使用者:
      SELECT * FROM pg_roles;
      

設定使用者密碼政策

您可以使用內建的驗證類型設定密碼政策。

gcloud

如要設定使用者密碼政策,請使用 gcloud sql users set-password-policy 指令。

更改下列內容:

  • USER_NAME:使用者名稱。
  • INSTANCE_NAME:執行個體的名稱。
  • HOST:使用者的主機名稱,可做為特定 IP 位址、位址範圍或任何主機 (%)。
  • PASSWORD_POLICY_ALLOWED_FAILED_ATTEMPTS:選用:使用者輸入錯誤密碼的次數上限,超過此上限後,系統就會鎖定帳戶。使用 --password-policy-enable-failed-attempts-check 啟用,使用 --no-password-policy-enable-failed-attempts-check 停用檢查。
  • PASSWORD_POLICY_PASSWORD_EXPIRATION_DURATION:選用:指定密碼過期後,使用者需要建立新密碼的天數。
gcloud sql users set-password-policy USER_NAME \
--instance=INSTANCE_NAME \
--host=HOST \
--password-policy-enable-failed-attempts-check \
--password-policy-allowed-failed-attempts=PASSWORD_POLICY_ALLOWED_FAILED_ATTEMPTS \
--password-policy-password-expiration-duration=PASSWORD_POLICY_PASSWORD_EXPIRATION_DURATION

如要移除使用者密碼政策,請使用 --clear-password-policy 參數。

gcloud sql users set-password-policy USER_NAME \
--instance=INSTANCE_NAME \
--host=HOST \
--clear-password-policy

如要查看使用者密碼政策,請參閱「 列出使用者」。

REST v1

如要設定使用者密碼政策,請使用 PUT 要求搭配 users:update 方法。

使用任何要求資料之前,請先替換以下項目:

  • PROJECT_ID:您的專案 ID
  • INSTANCE_ID:執行個體 ID
  • USER_ID:使用者 ID
  • PASSWORD:使用者的密碼
  • FAILED_ATTEMPTS_CHECK:設為 true 可啟用檢查功能,檢查帳戶鎖定後,嘗試登入失敗的次數
  • NUMBER_OF_ATTEMPTS:帳戶遭到鎖定前,登入失敗的次數
  • PASSWORD_EXPIRATION_DURATION:密碼過期後,使用者需要建立新密碼的天數

HTTP 方法和網址:

PUT https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users?name=USER_ID

JSON 要求主體:

{
  "name": "USER_ID",
  "password": "PASSWORD",
  "data":
  {
    "passwordValidationUserPolicy" : {
      {
        "enableFailedAttemptsCheck" : "FAILED_ATTEMPTS_CHECK",
        "allowedFailedAttempts" : "NUMBER_OF_ATTEMPTS",
        "passwordExpirationDuration" : "PASSWORD_EXPIRATION_DURATION"
      }
    },
  }
}

如要傳送要求,請展開以下其中一個選項:

您應該會收到如下的 JSON 回應:

如要查看使用者密碼政策,請參閱「 列出使用者」。

REST v1beta4

如要設定使用者密碼政策,請使用 PUT 要求搭配 users:update 方法。

使用任何要求資料之前,請先替換以下項目:

  • PROJECT_ID:您的專案 ID
  • INSTANCE_ID:執行個體 ID
  • USER_ID:使用者 ID
  • PASSWORD:使用者的密碼
  • FAILED_ATTEMPTS_CHECK:設為 true 可啟用檢查功能,檢查帳戶鎖定後,嘗試登入失敗的次數
  • NUMBER_OF_ATTEMPTS:帳戶遭到鎖定前,登入失敗的次數
  • PASSWORD_EXPIRATION_DURATION:密碼過期後,使用者需要建立新密碼的天數

HTTP 方法和網址:

PUT https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/users?name=USER_ID

JSON 要求主體:

{
  "name": "USER_ID",
  "password": "PASSWORD",
  "data":
  {
    "passwordValidationUserPolicy" : {
      {
        "enableFailedAttemptsCheck" : "FAILED_ATTEMPTS_CHECK",
        "allowedFailedAttempts" : "NUMBER_OF_ATTEMPTS",
        "passwordExpirationDuration" : "PASSWORD_EXPIRATION_DURATION"
      }
    },
  }
}

如要傳送要求,請展開以下其中一個選項:

您應該會收到如下的 JSON 回應:

如要查看使用者密碼政策,請參閱「 列出使用者」。

列出使用者

控制台

  1. 前往 Google Cloud 控制台的「Cloud SQL 執行個體」頁面。

    前往 Cloud SQL 執行個體

  2. 如要開啟執行個體的「總覽」頁面,請按一下執行個體名稱。
  3. 在 SQL 導覽選單中選取「Users」

gcloud

使用 gcloud sql users list 指令,列出這個執行個體的使用者:

gcloud sql users list \
--instance=INSTANCE_NAME

這個指令會傳回每位使用者的 NameHost 和驗證 Type

此外,對於內建驗證類型,系統會傳回密碼政策設定和狀態。例如:

    NAME    HOST    TYPE        PASSWORD_POLICY
    user1           BUILT_IN    {'allowedFailedAttempts': 2,
                                 'enableFailedAttemptsCheck': True,
                                 'passwordExpirationDuration': '7d',
                                 'status': {
                                   'locked': True,
                                   'passwordExpirationTime': '2022-07-01T19:53:45.822742904Z'
                                 }
                                }
   

REST v1

如要列出為執行個體定義的使用者,請使用 GET 要求搭配 users:list 方法。

使用任何要求資料之前,請先替換以下項目:

  • project-id:您的專案 ID
  • instance-id:所需的執行個體 ID

HTTP 方法和網址:

GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/users

如要傳送要求,請展開以下其中一個選項:

您應該會收到如下的 JSON 回應:

{
  "kind": "sql#usersList",
  "items": [
    {
      "kind": "sql#user",
      "etag": "--redacted--",
      "name": "sqlserver",
      "host": "",
      "instance": "instance-id",
      "project": "project-id",
      "sqlserverUserDetails": {
        "serverRoles": [
          "CustomerDbRootRole"
        ]
      }
    },
    {
      "kind": "sql#user",
      "etag": "--redacted--",
      "name": "user-id-1",
      "host": "",
      "instance": "instance-id",
      "project": "project-id",
      "sqlserverUserDetails": {
        "serverRoles": [
          "CustomerDbRootRole"
        ]
      }
    },
    {
      "kind": "sql#user",
      "etag": "--redacted--",
      "name": "user-id-2",
      "host": "",
      "instance": "instance-id",
      "project": "project-id",
      "sqlserverUserDetails": {
        "serverRoles": [
          "CustomerDbRootRole"
        ]
      }
    },
    {
      ...
    },
    {
      ...
    }
  ]
}

如果已設定使用者密碼政策,回應的 items 部分就會包含 passwordPolicy 部分。以下程式碼範例顯示 passwordPolicy 部分。

  {
  ...
  "passwordValidationUserPolicy" : {
    {
      "enableFailedAttemptsCheck" : true,
      "allowedFailedAttempts" : 8,
      "passwordExpirationDuration" : "7d"
    }
  },
  ...
}
  

REST v1beta4

如要列出為執行個體定義的使用者,請使用 GET 要求搭配 users:list 方法。

使用任何要求資料之前,請先替換以下項目:

  • project-id:您的專案 ID
  • instance-id:所需的執行個體 ID

HTTP 方法和網址:

GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users

如要傳送要求,請展開以下其中一個選項:

您應該會收到如下的 JSON 回應:

{
  "kind": "sql#usersList",
  "items": [
    {
      "kind": "sql#user",
      "etag": "--redacted--",
      "name": "sqlserver",
      "host": "",
      "instance": "instance-id",
      "project": "project-id",
      "sqlserverUserDetails": {
        "serverRoles": [
          "CustomerDbRootRole"
        ]
      }
    },
    {
      "kind": "sql#user",
      "etag": "--redacted--",
      "name": "user-id-1",
      "host": "",
      "instance": "instance-id",
      "project": "project-id",
      "sqlserverUserDetails": {
        "serverRoles": [
          "CustomerDbRootRole"
        ]
      }
    },
    {
      "kind": "sql#user",
      "etag": "--redacted--",
      "name": "user-id-2",
      "host": "",
      "instance": "instance-id",
      "project": "project-id",
      "sqlserverUserDetails": {
        "serverRoles": [
          "CustomerDbRootRole"
        ]
      }
    },
    {
      ...
    },
    {
      ...
    }
  ]
}

如果已設定使用者密碼政策,回應的 items 部分就會包含 passwordPolicy 部分。以下程式碼範例顯示 passwordPolicy 部分。

  {
  ...
  "passwordValidationUserPolicy" : {
    {
      "enableFailedAttemptsCheck" : true,
      "allowedFailedAttempts" : 8,
      "passwordExpirationDuration" : "7d"
    }
  },
  ...
}
  

psql 用戶端

psql 提示訊息中,列出 PostgreSQL 使用者:

SELECT * FROM pg_roles;

變更使用者密碼

您可以透過下列其中一種方式變更使用者密碼。

控制台

  1. 前往 Google Cloud 控制台的「Cloud SQL 執行個體」頁面。

    前往 Cloud SQL 執行個體

  2. 如要開啟執行個體的「總覽」頁面,請按一下執行個體名稱。
  3. 在 SQL 導覽選單中選取「Users」
  4. 針對您要更新的使用者,按一下「更多動作」圖示 更多動作圖示。
  5. 選取「變更密碼」
  6. 指定新密碼。
  7. 按一下「確定」

gcloud

使用 gcloud sql users set-password 指令變更密碼。

更改下列內容:

  • USER_NAME:使用者名稱。
  • INSTANCE_NAME:執行個體的名稱。
gcloud sql users set-password USER_NAME \
--instance=INSTANCE_NAME \
--prompt-for-password

REST v1

如要變更使用者密碼,請使用 PUT 要求搭配 users:update 方法。

以下要求會更新使用者帳戶的密碼 user_name

使用任何要求資料之前,請先替換以下項目:

  • project-id:您的專案 ID
  • instance-id:所需的執行個體 ID
  • user-id:使用者 ID
  • password:使用者的新密碼

HTTP 方法和網址:

PUT https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/users?name=user-id

JSON 要求主體:

{
  "name": "user-id",
  "password": "password"
}

如要傳送要求,請展開以下其中一個選項:

您應該會收到如下的 JSON 回應:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id",
  "status": "DONE",
  "user": "[email protected]",
  "insertTime": "2020-02-07T22:38:41.217Z",
  "startTime": "2020-02-07T22:38:41.217Z",
  "endTime": "2020-02-07T22:38:44.801Z",
  "operationType": "UPDATE_USER",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

REST v1beta4

如要變更使用者密碼,請使用 PUT 要求搭配 users:update 方法。

以下要求會更新使用者帳戶的密碼 user_name

使用任何要求資料之前,請先替換以下項目:

  • project-id:您的專案 ID
  • instance-id:所需的執行個體 ID
  • user-id:使用者 ID
  • password:使用者的新密碼

HTTP 方法和網址:

PUT https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users?name=user-id

JSON 要求主體:

{
  "name": "user-id",
  "password": "password"
}

如要傳送要求,請展開以下其中一個選項:

您應該會收到如下的 JSON 回應:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
  "status": "DONE",
  "user": "[email protected]",
  "insertTime": "2020-02-07T22:38:41.217Z",
  "startTime": "2020-02-07T22:38:41.217Z",
  "endTime": "2020-02-07T22:38:44.801Z",
  "operationType": "UPDATE_USER",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

psql 用戶端

psql 提示中執行 ALTER USER 指令。
  1. 解鎖使用者。
    ALTER USER USER_NAME WITH LOGIN;
  2. 變更密碼,並在系統提示時輸入密碼。
    ALTER USER USER_NAME WITH PASSWORD PASSWORD;

如果使用者因密碼政策設定而遭到鎖定,請變更密碼解除鎖定。變更密碼時,請確保密碼符合密碼政策。

移除使用者密碼政策

您可以從具有內建驗證類型的使用者移除密碼政策。

gcloud

如要移除使用者密碼政策,請使用 gcloud sql users set-password-policy 指令和 --clear-password-policy 參數。

更改下列內容:

  • USER_NAME:使用者名稱
  • INSTANCE_NAME:執行個體名稱
  • HOST:使用者的主機名稱,以特定 IP 位址、位址範圍或任何主機的形式 (%)
gcloud sql users set-password-policy USER_NAME \
--instance=INSTANCE_NAME \
--host=HOST \
--clear-password-policy

REST v1

如要移除使用者密碼政策,請使用 PUT 要求搭配 users:update 方法。

使用任何要求資料之前,請先替換以下項目:

  • PROJECT_ID:您的專案 ID
  • INSTANCE_ID:執行個體 ID
  • USER_ID:使用者 ID
  • PASSWORD:使用者的密碼

HTTP 方法和網址:

PUT https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users?name=USER_ID

JSON 要求主體:

{
  "name": "USER_ID",
  "password": "PASSWORD",
  "data":
  {
    "passwordValidationUserPolicy" : {}
  }
}

如要傳送要求,請展開以下其中一個選項:

您應該會收到如下的 JSON 回應:

REST v1beta4

如要移除使用者密碼政策,請使用 PUT 要求搭配 users:update 方法。

使用任何要求資料之前,請先替換以下項目:

  • PROJECT_ID:您的專案 ID
  • INSTANCE_ID:執行個體 ID
  • USER_ID:使用者 ID
  • PASSWORD:使用者的密碼

HTTP 方法和網址:

PUT https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/users?name=USER_ID

JSON 要求主體:

{
  "name": "USER_ID",
  "password": "PASSWORD",
  "data":
  {
    "passwordValidationUserPolicy" : {}
  }
}

如要傳送要求,請展開以下其中一個選項:

您應該會收到如下的 JSON 回應:

移除使用者

預設使用者可以移除使用者。

在移除使用者之前,您必須先刪除該使用者擁有的所有物件,或重新指派其擁有權,並撤銷該角色在其他物件上已授予的任何權限。

控制台

  1. 前往 Google Cloud 控制台的「Cloud SQL 執行個體」頁面。

    前往 Cloud SQL 執行個體

  2. 如要開啟執行個體的「總覽」頁面,請按一下執行個體名稱。
  3. 在 SQL 導覽選單中選取「Users」
  4. 針對要移除的使用者,按一下「更多動作」圖示 更多動作圖示。
  5. 依序選取「移除」和「移除」

gcloud

使用 gcloud sql users delete 指令移除使用者。

更改下列內容:

  • USER_NAME:使用者名稱。
  • INSTANCE_NAME:執行個體的名稱。
gcloud sql users delete USER_NAME \
--instance=INSTANCE_NAME

REST v1

以下要求使用 users:delete 方法刪除指定的使用者帳戶。

使用任何要求資料之前,請先替換以下項目:

  • PROJECT_ID:您的專案 ID
  • INSTANCE_ID:所需的執行個體 ID
  • USERNAME:使用者或服務帳戶的電子郵件地址

HTTP 方法和網址:

DELETE https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users?host=&name=USERNAME

如要傳送要求,請展開以下其中一個選項:

您應該會收到如下的 JSON 回應:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "DONE",
  "user": "[email protected]",
  "insertTime": "2020-02-07T22:38:41.217Z",
  "startTime": "2020-02-07T22:38:41.217Z",
  "endTime": "2020-02-07T22:38:44.801Z",
  "operationType": "DELETE_USER",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

REST v1beta4

以下要求使用 users:delete 方法刪除指定的使用者帳戶。

使用任何要求資料之前,請先替換以下項目:

  • PROJECT_ID:您的專案 ID
  • INSTANCE_ID:所需的執行個體 ID
  • USERNAME:使用者或服務帳戶的電子郵件地址

HTTP 方法和網址:

DELETE https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/users?host=&name=USERNAME

如要傳送要求,請展開以下其中一個選項:

您應該會收到如下的 JSON 回應:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "DONE",
  "user": "[email protected]",
  "insertTime": "2020-02-07T22:38:41.217Z",
  "startTime": "2020-02-07T22:38:41.217Z",
  "endTime": "2020-02-07T22:38:44.801Z",
  "operationType": "DELETE_USER",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

psql 用戶端

  1. psql 提示訊息中刪除使用者:
    DROP ROLE USER_NAME;

    如要進一步瞭解 DROP ROLE 陳述式,請參閱 PostgreSQL 說明文件

更新使用者屬性

如要更新使用者屬性,您必須使用 psql 用戶端。詳情請參閱 PostgreSQL 說明文件中的「資料庫角色」。

後續步驟