本頁面說明如何啟用並使用 Cloud SQL 內建驗證機制。
如要進一步瞭解您使用 Cloud SQL 建立的使用者,請參閱「其他 SQL Server 使用者」。建立使用者前
- 建立 Cloud SQL 執行個體。詳情請參閱「建立執行個體」。
- 如果您打算使用資料庫的管理用戶端來管理使用者,請設定密碼,在執行個體上設定預設使用者。請參閱「為預設使用者帳戶設定密碼」。
設定預設使用者帳戶的密碼
建立新的 Cloud SQL 執行個體時,您必須先為預設使用者帳戶設定密碼,才能連線至執行個體。
針對 SQL Server 適用的 Cloud SQL,預設使用者是sqlserver
。控制台
-
前往 Google Cloud 控制台的「Cloud SQL 執行個體」頁面。
- 如要開啟執行個體的「總覽」頁面,請按一下執行個體名稱。
- 在 SQL 導覽選單中選取「Users」。
- 找到
sqlserver
使用者,然後從「更多動作」選單中選取「變更密碼」。
- 提供你能記住的高強度密碼,然後按一下「確定」。
gcloud
使用
gcloud sql users set-password
指令,如以下所示,為預設使用者設定密碼。
請先將 INSTANCE_NAME 替換為執行個體名稱,再執行指令。
gcloud sql users set-password sqlserver \ --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" }
新增使用者
設定預設使用者帳戶後,您可以建立其他使用者。
控制台
-
前往 Google Cloud 控制台的「Cloud SQL 執行個體」頁面。
- 如要開啟執行個體的「總覽」頁面,請按一下執行個體名稱。
- 在 SQL 導覽選單中選取「Users」。
- 按一下「新增使用者帳戶」。
- 在「Add a user account to instance instance_name」頁面中,新增下列資訊:
- 「使用者名稱」。
- 密碼 (選填)。
- 按一下「新增」。
gcloud
如要建立使用者,請使用
gcloud sql users create
指令。
更改下列內容:
- USER_NAME:使用者名稱。
- INSTANCE_NAME:執行個體的名稱。
- PASSWORD:使用者的密碼。
gcloud sql users create USER_NAME \ --instance=INSTANCE_NAME \ --password=PASSWORD
Cloud SQL 和內部部署 SQL Server 的使用者名稱長度限制相同。
Terraform
如要建立使用者,請使用 Terraform 資源。
套用變更
如要在 Google Cloud 專案中套用 Terraform 設定,請完成下列各節中的步驟。
準備 Cloud Shell
- 啟動 Cloud Shell。
-
設定要套用 Terraform 設定的預設 Google Cloud 專案。
您只需為每個專案執行這個指令一次,而且可以在任何目錄中執行。
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
如果您在 Terraform 設定檔中設定明確的值,系統就會覆寫環境變數。
準備目錄
每個 Terraform 設定檔都必須有自己的目錄 (也稱為根模組)。
-
在 Cloud Shell 中建立目錄,並在該目錄中建立新檔案。檔案名稱必須包含
.tf
副檔名,例如main.tf
。在本教學課程中,檔案稱為main.tf
。mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
如果您正在參考教學課程,可以複製各個章節或步驟中的程式碼範例。
將範例程式碼複製到新建立的
main.tf
中。您可以視需要從 GitHub 複製程式碼。如果 Terraform 程式碼片段是端對端解決方案的一部分,建議您採用這種做法。
- 查看並修改要套用至環境的範例參數。
- 儲存變更。
-
初始化 Terraform。這項操作只需對每個目錄執行一次。
terraform init
如要使用最新版的 Google 供應器,請視需要加入
-upgrade
選項:terraform init -upgrade
套用變更
-
檢查設定,並確認 Terraform 要建立或更新的資源是否符合您的預期:
terraform plan
視需要修正設定。
-
執行下列指令,並在提示中輸入
yes
,即可套用 Terraform 設定:terraform apply
等待 Terraform 顯示「Apply complete!」(套用完成) 訊息。
- 開啟 Google Cloud 專案即可查看結果。在 Google Cloud 控制台中,前往 UI 中的資源,確認 Terraform 已建立或更新這些資源。
刪除變更
如要刪除變更,請按照下列步驟操作:
- 如要停用防刪除功能,請在 Terraform 設定檔中將
deletion_protection
引數設為false
。deletion_protection = "false"
- 執行下列指令,並在提示中輸入
yes
,即可套用更新的 Terraform 設定:terraform apply
-
如要移除先前透過 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 和內部部署 SQL Server 的使用者名稱長度限制相同。
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 和內部部署 SQL Server 的使用者名稱長度限制相同。
列出使用者
控制台
-
前往 Google Cloud 控制台的「Cloud SQL 執行個體」頁面。
- 如要開啟執行個體的「總覽」頁面,請按一下執行個體名稱。
- 在 SQL 導覽選單中選取「Users」。
gcloud
使用 gcloud sql users list 指令,列出這個執行個體的使用者:
gcloud sql users list \ --instance=INSTANCE_NAME
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" ] } }, { ... }, { ... } ] }
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" ] } }, { ... }, { ... } ] }
變更使用者密碼
您可以透過下列其中一種方式變更使用者密碼。
控制台
-
前往 Google Cloud 控制台的「Cloud SQL 執行個體」頁面。
- 如要開啟執行個體的「總覽」頁面,請按一下執行個體名稱。
- 在 SQL 導覽選單中選取「Users」。
- 針對您要更新的使用者,按一下「更多動作」圖示
。
- 選取「變更密碼」。
- 指定新密碼。
- 按一下「確定」。
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" }
移除使用者
預設使用者可以移除使用者。
在移除使用者之前,您必須先刪除該使用者擁有的所有物件,或重新指派其擁有權,並撤銷該角色在其他物件上已授予的任何權限。
控制台
-
前往 Google Cloud 控制台的「Cloud SQL 執行個體」頁面。
- 如要開啟執行個體的「總覽」頁面,請按一下執行個體名稱。
- 在 SQL 導覽選單中選取「Users」。
- 針對要移除的使用者,按一下「更多動作」圖示
。
- 依序選取「移除」和「移除」。
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" }
更新使用者屬性
如要瞭解 SQL Server 中的資料庫層級角色,請參閱 SQL Server 說明文件中的「使用資料庫層級角色」一文。後續步驟
- 進一步瞭解 Cloud SQL 如何與使用者搭配運作。