【发布时间】:2019-02-06 10:10:46
【问题描述】:
我正在尝试为我的 APPEngine 帐户使用云 SQL / mysql 实例。该应用程序是一个 python django-2.1.5 appengine 应用程序。我在谷歌云中创建了一个 MYSQL 实例。
我在从 SQL 实例详细信息复制的 app.yaml 文件中添加了以下内容:
beta_settings:
cloud_sql_instances: <INSTANCE_CONNECTION_NAME>=tcp:<TCP_PORT>
我已为我的 appengine 项目 xxx-app 的所有者 xxx-
app@appspot.gserviceaccount.com授予Cloud SQL Client权利。我已经为应用程序XYZ创建了一个数据库用户帐户,它可以连接到所有主机(* 选项)我在 settings.py 中的连接详情如下:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'my-db',
'USER': 'appengine',
'PASSWORD': 'xxx',
'HOST': '111.111.11.11', # used actual ip
'PORT': '3306'
}
}
- 我也按照https://github.com/GoogleCloudPlatform/appengine-django-skeleton/blob/master/mysite/settings.py进行了尝试:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'HOST': '/cloudsql/<your-project-id>:<your-cloud-sql-instance>',
'NAME': '<your-database-name>',
'USER': 'root',
}
}
- 我也无法从本地连接。但是,如果我对我的本地 IP 执行
Add Network然后尝试连接本地连接。使用 CIDR 表示法添加本地 IP 地址的网络后,该应用在本地运行良好。
我的问题:
- 如果不添加 AppEngine 分配的 IP 地址,我将无法连接到 Cloud sql。它给了我一个错误:
OperationalError: (2003, "Can't connect to MySQL server on '0.0.0.0' ([Errno 111] Connection refused)")
- 在哪里可以找到 appengine 分配的 IP 地址。即使是暂时的,我也不介意。我知道如果我需要静态 IP 地址,我必须创建一个计算 VM 实例。
【问题讨论】:
-
您是否在防火墙处添加了例外?
-
不,它们是默认值。如何获取appengine当前容器分配的IPAddress?
标签: python mysql django google-app-engine google-cloud-sql