在使用TCP从App Engine自定义环境连接到Google Cloud SQL时遇到问题,可能是由于网络配置或权限设置不正确导致的。以下是一些基础概念、可能的原因以及解决方案:
确保App Engine自定义环境和Cloud SQL在同一个VPC网络中,或者通过VPC对等连接进行通信。
# app.yaml
network:
name: your-vpc-network
subnetwork: your-subnetwork
确保App Engine自定义环境的实例具有访问Cloud SQL的适当权限。
gcloud projects add-iam-policy-binding your-project-id \
--member serviceAccount:your-service-account@your-project-id.iam.gserviceaccount.com \
--role roles/cloudsql.client
确保防火墙规则允许App Engine自定义环境的IP地址访问Cloud SQL。
gcloud compute firewall-rules create allow-cloudsql-access \
--allow tcp:3306 \
--target-tags=your-target-tag \
--source-ranges=YOUR_APP_ENGINE_IP_RANGE
如果使用的是静态IP地址,确保将App Engine自定义环境的IP地址添加到Cloud SQL的IP白名单中。
gcloud sql instances patch your-instance-name \
--authorized-networks=YOUR_APP_ENGINE_IP_ADDRESS
以下是一个简单的Python示例,展示如何使用TCP连接到Google Cloud SQL:
import pymysql
# 连接参数
config = {
'user': 'your-username',
'password': 'your-password',
'host': 'your-cloud-sql-ip',
'database': 'your-database',
'port': 3306,
'charset': 'utf8mb4',
'cursorclass': pymysql.cursors.DictCursor
}
try:
connection = pymysql.connect(**config)
with connection.cursor() as cursor:
sql = "SELECT * FROM your_table"
cursor.execute(sql)
result = cursor.fetchall()
print(result)
finally:
connection.close()
通过以上步骤和示例代码,您应该能够解决从App Engine自定义环境连接到Google Cloud SQL时遇到的问题。如果问题仍然存在,建议检查日志和监控信息,以便进一步诊断问题。
领取专属 10元无门槛券
手把手带您无忧上云