You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terraform修改GCP Cloud SQL Server root密码引发实例重建异常

解决Terraform修改GCP Cloud SQL Server root密码触发实例重建的问题

问题原因

你当前应该是在google_sql_database_instance资源中直接定义了settings.root_password字段来设置root密码。对于GCP Cloud SQL Server实例,这个字段属于实例创建时的一次性属性,Terraform会将其视为实例的核心创建参数,一旦修改该字段,Terraform会判定需要销毁原实例并创建新实例来应用变更——这和GCP控制台/gcloud API的行为不同,后者是直接修改现有用户的密码,而非重建实例。

解决方案

改用google_sql_user资源单独管理root用户的密码,而非在实例资源中定义初始密码。这样修改密码时,Terraform只会更新用户资源,不会触发实例重建。

示例代码

  1. 创建Cloud SQL Server实例(不指定root密码):
resource "google_sql_database_instance" "sql_server_instance" {
  name             = "my-sql-server-instance"
  database_version = "SQLSERVER_2019_STANDARD"
  region           = "us-central1"

  settings {
    tier = "db-custom-2-8192"
    # 不要在这里定义root_password
  }
}
  1. 单独创建root用户并设置密码:
resource "google_sql_user" "sql_root_user" {
  name     = "root"
  instance = google_sql_database_instance.sql_server_instance.name
  host     = "%" # 允许任意主机访问,可根据实际需求调整
  password = var.sql_root_password # 从变量读取密码,方便后续修改
}

操作说明

  • 修改密码时,只需更新var.sql_root_password的值,运行terraform apply即可,Terraform会调用GCP API直接更新现有用户的密码,不会对SQL Server实例进行销毁重建。
  • 若你之前已经通过实例资源创建了带root密码的实例,需要先将settings.root_password从实例资源中移除,运行一次terraform apply(这一步不会重建实例,只是移除Terraform状态中对该字段的跟踪),再添加google_sql_user资源接管密码管理。

内容的提问来源于stack exchange,提问作者Sahil Kandroo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 09:50:34