允许应用程序引擎标准环境连接到计算引擎Mysql

允许应用程序引擎标准环境连接到计算引擎Mysql,mysql,google-app-engine,google-compute-engine,firewall,Mysql,Google App Engine,Google Compute Engine,Firewall,我的计算引擎上有一个mysql容器,我希望我的应用程序引擎能够与它通信 我正在使用django,具有以下设置 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'HOST': <---ACTUAL_IP_REMOVED -->, 'NAME': 'name_of_my_database', 'USER': 'root',

我的计算引擎上有一个mysql容器,我希望我的应用程序引擎能够与它通信

我正在使用django,具有以下设置

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'HOST': <---ACTUAL_IP_REMOVED -->,
        'NAME': 'name_of_my_database',
        'USER': 'root',
        'PASSWORD': <-- Actual password removed -->,
        'PORT': '3306'
    }
}
数据库={
“默认值”:{
'ENGINE':'django.db.backends.mysql',
“主机”:,
'名称':'我的数据库的名称',
'用户':'根',
“密码”:,
“端口”:“3306”
}
}
我还有一个防火墙规则,允许目标服务帐户(我的谷歌计算服务帐户)和源服务帐户(我的应用引擎服务帐户)在tcp:3306上的所有入口

尽管如此,我仍然在我的应用程序引擎日志中发现以下错误

OperationalError: (2003, "Can't connect to MySQL server on '<--IP-Address-removed--->' (110)")
OperationalError:(2003,“无法连接到“”(110)”上的MySQL服务器)

我忽略了什么/做错了什么?

您还必须允许SQL实例中的远程连接。尝试按照中描述的步骤,用您的数据替换答案中的数据。

这些解决方案都没有解决我的问题。看起来我的防火墙允许从源服务帐户app engine进入目标计算引擎服务帐户,但实际上不允许我的app engine app访问我的计算引擎mysql实例。特别是当我更改防火墙规则以允许ip地址为0.0.0.0/0(即所有内容)时,我的应用程序引擎就可以访问我的计算引擎实例。这并不理想,因此,如果有人知道正确的方法而不允许一切,我很乐意选择这一点作为正确答案,因为我看到了两种可能性:将此应用程序移动到灵活的环境中,GCE和GAE Flexible都可以共享网络,或者将MySQL服务器移动到云SQL,在这里您可以有更多的连接选项。我可以在不移动任何产品的情况下继续搜索,但我现在不确定。只是确定一下,您正在使用mySQL实例的外部IP,对吗?您是直接在操作系统上运行数据库还是运行容器?是的,我使用的是mysql实例的外部IP。我在操作系统的容器中运行数据库。操作系统映像是谷歌的容器操作系统映像。docker映像是mysql映像,默认情况下会公开3306,因此端口3306可供外部设备使用。这是一个防火墙问题,当我打开对VM的所有IP的访问权限时,这一点很明显。理想情况下,虽然我可以选择只向GCE VM打开我的应用程序引擎应用程序的IP。我同意这是一个防火墙规则,但我想了解基础设施。网络标签和服务帐户标签仅适用于专有网络网络内的资源。App Engine Standard使用单独的VPC网络,因此未检测到源服务帐户标记。