[英]Google APP Engine and cloud sql :: Unable to connect Spring boot app in Google cloud sql (my sql)
[英]NodeJs:Unable to connect Google Cloud SQL from Google App Engine
我已经从事App Engine和Cloud SQL已有一段时间了。
最近,我在数据库上禁用了公共访问权限 。 从那时起,我无法使用我的App Engine连接到CloudSQL(App Engine和Cloud SQL都在同一个Google Cloud Project中)。
我能够连接的唯一方法是将CloudSQL上的App Engine IP列入白名单。 但是在新的部署中,IP发生了变化,因此添加静态IP并不是解决此问题的理想方法。
在“ Cloud SQL连接”选项卡中,它显示以下内容:
App Engine授权
默认情况下,该项目中的所有应用程序都经过授权。 要授权其他项目中的应用,请按照以下步骤操作。此项目中的应用:所有已授权。 在这种情况下不正确。
启用了Cloud SQL API和Cloud SQL Admin API。
搜索了这些问题,并按照文档和其他stackoverflow问题中的步骤进行操作:
1) 无法从我的App Engine访问Google Cloud SQL数据库
2) 致命错误后节点JS Mysql协议队列
3) Node-MySqL中的“ PROTOCOL_ENQUEUE_AFTER_FATAL_ERROR”
4) 错误:在mysql节点中出现致命错误后无法排队查询
5) 无法从Google App Engine连接Google Cloud SQL
所有这些都没有太大帮助。
connection = mysql.createConnection({ host : 'INSTANCE_CONNECTION_NAME', user : 'db_user', password : 'db_password', database : 'db_name' });
预期: Get a Connection.
实际: getaddrinfo ENOTFOUND INSTANCE_CONNECTION_NAME INSTANCE_CONNECTION_NAME:3306
不确定为什么要两次使用INSTANCE_CONNECTION_NAME
。
让我说一下,如果我了解您的问题。
您拥有公共IP,但仅使项目中的应用程序可以访问它。 如果是这种情况,并且考虑到您使用的是灵活环境,我发现以下方法会有所帮助
1)建立连接时,将Host称为172.17.0.6
2)并在app.yaml中,指定“实例概述”页面中提到的INSTANCE_CONNECTION_NAME 。
3)部署并运行。
这将与使用Docker构建的Flexible NodeJs环境一起使用。 所使用的默认数据库容器为172.17.0.6
,可在此处访问实例连接名称,并在App Engine
和CloudSQL DB
之间建立连接。
我尝试复制您的用例场景,以下步骤对我有用。 您有没有公共IP的Cloud SQL实例,然后为了从App Engine连接到它,您将需要为两个服务使用相同的VPN网络。 因此,您将必须编辑Cloud SQL实例以指示要使用的网络并编辑app.yaml配置文件。 同样重要的是,两个服务都必须在同一区域中运行。
在app.yaml
配置文件中,您必须添加以下标签:
network:
name: [YOUR_NETWORK_NAME]
subnetwork_name: [YOUR_SUBNETWORK_NAME]
并使用数据库环境变量:
env_variables:
SQL_USER: [YOUR_USER]
SQL_PASSWORD: [YOUR_PASSWORD]
SQL_DATABASE: [YOUR_DATABASE-NAME]
# e.g. my-awesome-project:us-central1:my-cloud-sql-instance
INSTANCE_CONNECTION_NAME:<INSTANCE_CONNECTION_NAME>
# [END gae_flex_mysql_env]
最后是以下几行:
beta_settings:
cloud_sql_instances: <INSTANCE_CONNECTION_NAME>
请记住,您必须用所需的数据替换“ <>”或“ []”中的内容。
有关更多信息,您可以查看此文档从App Engine连接 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.