要在不同项目之间建立云SQL连接,可以使用以下代码示例中的步骤:
在源项目中创建一个服务帐号,并授予云SQL客户端角色。可以在Google Cloud Console中进行操作,或使用以下命令行代码:
gcloud iam service-accounts create [SERVICE_ACCOUNT_NAME] \
--description "Service account for Cloud SQL connection" \
--project [SOURCE_PROJECT_ID]
gcloud projects add-iam-policy-binding [SOURCE_PROJECT_ID] \
--member=serviceAccount:[SERVICE_ACCOUNT_EMAIL] \
--role=roles/cloudsql.client
在源项目中为服务帐号创建一个密钥,并将其保存到本地。可以使用以下命令行代码:
gcloud iam service-accounts keys create [KEY_FILE_PATH] \
--iam-account [SERVICE_ACCOUNT_EMAIL]
将密钥文件复制到目标项目中的适当位置,以供后续使用。
在目标项目中使用以下代码创建一个新的云SQL实例:
from google.cloud import sql
client = sql.Client(project="[TARGET_PROJECT_ID]")
instance = client.instance("[INSTANCE_NAME]")
instance.create()
在目标项目中使用以下代码创建一个新的数据库:
from google.cloud import sql
client = sql.Client(project="[TARGET_PROJECT_ID]")
instance = client.instance("[INSTANCE_NAME]")
database = instance.database("[DATABASE_NAME]")
database.create()
在目标项目中使用以下代码创建一个新的用户:
from google.cloud import sql
client = sql.Client(project="[TARGET_PROJECT_ID]")
instance = client.instance("[INSTANCE_NAME]")
user = instance.user("[USER_NAME]")
user.password = "[USER_PASSWORD]"
user.create()
在目标项目中使用以下代码将服务帐号添加为目标云SQL实例的授权用户:
from google.cloud import sql
client = sql.Client(project="[TARGET_PROJECT_ID]")
instance = client.instance("[INSTANCE_NAME]")
user = instance.user("[USER_NAME]")
user.grant('cloudsql.client', service_account=[SERVICE_ACCOUNT_EMAIL])
在源项目中使用以下代码连接到目标云SQL实例:
import pymysql
connection = pymysql.connect(
host="[TARGET_INSTANCE_CONNECTION_NAME]",
user="[USER_NAME]",
password="[USER_PASSWORD]",
db="[DATABASE_NAME]",
cursorclass=pymysql.cursors.DictCursor)
# 执行SQL查询或其他操作
请将上述示例中的方括号部分替换为实际的项目ID、实例名称、数据库名称、用户名称、用户密码和服务帐号电子邮件地址。