本頁提供建立或編輯 Cloud SQL 執行個體的程序,允許設定為使用 Cloud SQL IAM 資料庫驗證的使用者、服務帳戶或群組存取。如要進一步瞭解 Cloud SQL IAM 整合,請參閱「IAM 驗證」。
新建立的執行個體有四個系統資料庫:
information_schema
:提供資料庫中繼資料的存取權,以及 MySQL 伺服器的相關資訊。mysql
:系統結構定義。其中包含資料表,用於儲存 MySQL 伺服器執行時所需的資訊。performance_schema
:這項功能可監控低階的 MySQL 伺服器執行作業。sys
:包含一組物件,可協助資料庫管理員和開發人員解讀效能結構定義收集的資料。
事前準備
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Install the gcloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Install the gcloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
請確認使用者帳戶具備 Cloud SQL 管理員和 Compute 檢視者角色。
進一步瞭解角色和權限。
- 全新 SQL 網路架構:每個專案最多可有 1000 個執行個體。
- 舊版 SQL 網路架構:每個專案最多可有 100 個執行個體。
- 同時使用兩種架構:視執行個體在兩種架構中的分布情形而定,上限介於 100 到 1000 之間。
-
前往 Google Cloud 控制台的「Cloud SQL Instances」頁面。
- 點選「建立執行個體」。
- 按一下「Choose MySQL」(選擇 MySQL)。
- 輸入「執行個體 ID」的名稱。 請勿在執行個體名稱中加入敏感資訊或個人識別資訊,因為外部使用者可以看見此名稱。您不需要在執行個體名稱中包含專案 ID,系統會在適當地方 (例如在記錄檔中) 自動加入專案 ID。
- 輸入 root 使用者的密碼。
- 從「資料庫版本」選單中選取資料庫版本。
- 在「Choose region and zonal availability」(選擇區域和可用區供應情形) 專區中,選取執行個體的區域和可用區。您的執行個體必須與存取該執行個體的資源位於相同地區。選取的區域日後無法修改。通常不需要指定區域。
- 在「Customize your instance」(自訂執行個體) 專區中,按一下「Show Configuration Options」(顯示設定選項),然後展開「Flags」(旗標)。
- 按一下「新增旗標」。
- 從「選擇標記」選單中選取
cloudsql_iam_authentication
標記。確認已選取「開啟」做為這個標記的值,然後按一下「完成」。 - 視需要設定其他執行個體設定。如要進一步瞭解設定,請參閱「設定」。
- 點選「建立執行個體」。
- INSTANCE_NAME:新執行個體的名稱。
- MYSQL_VERSION:MySQL 版本 (例如 MYSQL_5_7 或 MYSQL_8_0)。
- NUMBER_OF_CORES:機器中的核心數量。
- AMOUNT_OF_MEMORY:電腦中的記憶體容量。請提供大小單位 (例如 3072MiB 或 9GiB)。
- ZONE:偏好的 Compute Engine 可用區 (例如 us-central1-a 或 us-central1-b)。
- PASSWORD:為根使用者建立密碼。
- 啟動 Cloud Shell。
-
設定要套用 Terraform 設定的預設 Google Cloud 專案。
每項專案只需要執行一次這個指令,且可以在任何目錄中執行。
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
如果您在 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
-
執行下列指令,並在提示中輸入
yes
,移除先前透過 Terraform 設定套用的資源:terraform destroy
- INSTANCE_ID:所需執行個體 ID
- REGION:所需區域,例如 us-east-1
- PROJECT_ID:專案 ID
- LOCATION_ID:地點 ID
- DATABASE_VERSION:資料庫版本的列舉字串。
例如:
MYSQL_8_0
- PASSWORD:根使用者的密碼
- MACHINE_TYPE:機器 (層級) 類型的列舉字串,如下所示:
db-custom-[CPUS]-[MEMORY_MBS]
- INSTANCE_ID:所需執行個體 ID
- REGION:所需區域,例如 us-east-1
- PROJECT_ID:專案 ID
- LOCATION_ID:地點 ID
- DATABASE_VERSION:資料庫版本的列舉字串。
例如:
MYSQL_8_0
- PASSWORD:根使用者的密碼
- MACHINE_TYPE:機器 (層級) 類型的列舉字串,如下所示:
db-custom-[CPUS]-[MEMORY_MBS]
-
前往 Google Cloud 控制台的「Cloud SQL Instances」頁面。
- 如要開啟執行個體的「總覽」頁面,請按一下執行個體名稱。
- 按一下 [編輯]。
- 在「自訂執行個體」部分,展開「旗標」。
- 按一下「新增旗標」。
- 從「選擇標記」選單中選取
cloudsql_iam_authentication
標記。確認已選取「開啟」做為這個標記的值,然後按一下「完成」。 - 視需要設定其他執行個體設定。如要進一步瞭解設定,請參閱「設定」。
- 按一下 [儲存]。
- INSTANCE_NAME:新執行個體的名稱。
- PROJECT_ID:專案 ID
- LOCATION_ID:地點 ID
- INSTANCE_ID:所需執行個體 ID
- REGION:所需區域
- DATABASE_VERSION:資料庫版本的列舉字串。
例如:
MYSQL_8_0
- PASSWORD:根使用者的密碼
- MACHINE_TYPE:機器 (層級) 類型的列舉字串,如下所示:
db-custom-[CPUS]-[MEMORY_MBS]
- PROJECT_ID:專案 ID
- LOCATION_ID:地點 ID
- INSTANCE_ID:所需執行個體 ID
- REGION:所需區域
- DATABASE_VERSION:資料庫版本的列舉字串。
例如:
MYSQL_8_0
- PASSWORD:根使用者的密碼
- MACHINE_TYPE:機器 (層級) 類型的列舉字串,如下所示:
db-custom-[CPUS]-[MEMORY_MBS]
- 進一步瞭解 IAM 資料庫驗證。
- 瞭解如何設定唯讀副本登入,以進行 IAM 資料庫驗證。
- 瞭解如何建立使用 Cloud SQL IAM 資料庫驗證的使用者和服務帳戶。
- 瞭解如何將 IAM 政策繫結新增至使用者或服務帳戶。
- 瞭解如何使用 IAM 資料庫驗證功能登入 Cloud SQL 資料庫。
- 瞭解如何管理身分與存取權管理資料庫驗證功能的使用者和服務帳戶。
單一專案可擁有的執行個體數量上限取決於這些執行個體的網路架構:
如需提高上限,請提交客服案件。唯讀備用資源會計為執行個體。
為 IAM 資料庫驗證設定新的執行個體
如要為新的 Cloud SQL 執行個體設定 IAM 資料庫驗證,請啟用 cloudsql_iam_authentication
旗標。啟用這個旗標後,您就可以將 IAM 使用者、服務帳戶或群組新增至 Cloud SQL 執行個體。
如要設定新的 Cloud SQL 執行個體以使用 IAM 資料庫驗證,請按照下列步驟操作:
控制台
gcloud
執行 gcloud sql instances create
,並將 --database-flags
參數設為 cloudsql_iam_authentication=on
。
更改下列內容:
gcloud sql instances create INSTANCE_NAME \ --database-version=MYSQL_VERSION \ --cpu=NUMBER_OF_CORES \ --memory=AMOUNT_OF_MEMORY \ --zone=ZONE_NAME \ --root-password=PASSWORD \ --database-flags=cloudsql_iam_authentication=on
Terraform
如要建立啟用 IAM 資料庫驗證功能的執行個體,請使用 Terraform 資源。
套用變更
如要在 Google Cloud 專案中套用 Terraform 設定,請完成下列各節的步驟。
準備 Cloud Shell
準備目錄
每個 Terraform 設定檔都必須有自己的目錄 (也稱為根模組)。
套用變更
刪除變更
如要刪除變更,請按照下列步驟操作:
REST v1
請勿在執行個體名稱中加入敏感資訊或個人識別資訊 (PII),因為外部使用者可以看見此名稱。
您不需要在執行個體名稱中包含專案 ID,系統會在需要時自動加入專案 ID (例如在記錄檔中)。
使用任何要求資料之前,請先替換以下項目:
HTTP 方法和網址:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/instances
JSON 要求主體:
{ "name": "INSTANCE_ID", "region": "REGION", "databaseVersion": "DATABASE_VERSION", "rootPassword": "PASSWORD", "settings": { "tier": "MACHINE_TYPE", "backupConfiguration": { "enabled": true }, "databaseFlags": [ { "name": "cloudsql_iam_authentication", "value": "on" } ] } }
如要傳送要求,請展開以下其中一個選項:
您應該會收到如下的 JSON 回應:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-01T19:13:21.834Z", "operationType": "CREATE", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
REST v1beta4
請勿在執行個體名稱中加入敏感資訊或個人識別資訊 (PII),因為外部使用者可以看見此名稱。
您不需要在執行個體名稱中包含專案 ID,系統會在需要時自動加入專案 ID (例如在記錄檔中)。
使用任何要求資料之前,請先替換以下項目:
HTTP 方法和網址:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/locations/LOCATION_ID/instances
JSON 要求主體:
{ "name": "INSTANCE_ID", "region": "REGION", "databaseVersion": "DATABASE_VERSION", "rootPassword": "PASSWORD", "settings": { "tier": "MACHINE_TYPE", "backupConfiguration": { "enabled": true }, "databaseFlags": [ { "name": "cloudsql_iam_authentication", "value": "on" } ] } }
如要傳送要求,請展開以下其中一個選項:
您應該會收到如下的 JSON 回應:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-01T19:13:21.834Z", "operationType": "CREATE", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
為 IAM 資料庫驗證設定現有執行個體
如要為現有 Cloud SQL 執行個體設定 IAM 資料庫驗證,請啟用 cloudsql_iam_authentication
旗標。啟用這個旗標後,您就可以將 IAM 使用者、服務帳戶或群組新增至 Cloud SQL 執行個體。
如要設定現有的 Cloud SQL 執行個體,以使用 IAM 資料庫驗證,請按照下列步驟操作:
控制台
gcloud
如要瞭解如何安裝及開始使用 gcloud CLI,請參閱「安裝 gcloud CLI」。如要瞭解如何啟動 Cloud Shell,請參閱「使用 Cloud Shell」。
請使用
gcloud
sql instances patch
執行這項程序。
更改下列內容:
gcloud sql instances patch INSTANCE_NAME \ --database-flags=cloudsql_iam_authentication=on
這會重設所有其他現有的資料庫旗標設定。如需設定資料庫標記的進一步指引,請參閱「設定資料庫標記」。
REST v1
使用任何要求資料之前,請先替換以下項目:
HTTP 方法和網址:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/instances
JSON 要求主體:
{ "name": "INSTANCE_ID", "region": "REGION", "databaseVersion": "DATABASE_VERSION", "rootPassword": "PASSWORD", "settings": { "tier": "MACHINE_TYPE", "backupConfiguration": { "enabled": true } "databaseFlags": [ { "name": "cloudsql_iam_authentication", "value": "on" } ] } }
如要傳送要求,請展開以下其中一個選項:
您應該會收到如下的 JSON 回應:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-01T19:13:21.834Z", "operationType": "CREATE", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
REST v1beta4
使用任何要求資料之前,請先替換以下項目:
HTTP 方法和網址:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/locations/LOCATION_ID/instances
JSON 要求主體:
{ "name": "INSTANCE_ID", "region": "REGION", "databaseVersion": "DATABASE_VERSION", "rootPassword": "PASSWORD", "settings": { "tier": "MACHINE_TYPE", "backupConfiguration": { "enabled": true } "databaseFlags": [ { "name": "cloudsql_iam_authentication", "value": "on" } ] } }
如要傳送要求,請展開以下其中一個選項:
您應該會收到如下的 JSON 回應:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-01T19:13:21.834Z", "operationType": "CREATE", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }