我有一个简单的Java应用程序,部署到GCP AppEngine中。在同一个GCP下,我创建了一个的MySQL实例。
当有人提出HTTP请求时,我想在MySQL服务器上保存这个值。但是,我的Java应用程序无法连接到。
然而,在Cloud页面上,它说,All apps in this project. All authorized.应用程序无法连接,即使它们位于同一个GCP项目下。
当我添加所有的网络时,它就正常工作了。不过,我不想这样做:

我不能从App连接到Cloud的原因是什么?我需要做些配置吗?
发布于 2019-07-29 16:25:03
您不应该白名单0.0.0.0/0 -这允许任何IP地址试图连接到您的实例,并将是
我建议使用云套接字工厂。套接字工厂使用服务帐户凭据来验证到实例的连接。
您还可以检查这些关于应用程序连接的说明页面,以确保启用了正确的API并为服务帐户提供了正确的权限。
发布于 2019-09-11 07:28:38
您不应该白名单列出所有的IP,这使您的SQL实例可访问的任何人在互联网上。
谷歌通过UNIX处理从AppEngine到CloudSQL的连接。为了从本地连接,您应该在从INSTANCE_CONNECTION_NAME连接时使用AppEngine,您应该将主机指定为localhost,但将套接字路径添加为/cloudsql/<INSTANCE_CONNECTION_NAME>。这是给NodeJS的。
对于JAVA来说,这类似于
// Configure which instance and what database user to connect with.
config.setJdbcUrl(String.format("jdbc:mysql:///%s", DB_NAME));
config.setUsername(DB_USER); // e.g. "root", "postgres"
config.setPassword(DB_PASS); // e.g. "my-password"
// For Java users, the Cloud SQL JDBC Socket Factory can provide authenticated connections.
// See https://github.com/GoogleCloudPlatform/cloud-sql-jdbc-socket-factory for details.
config.addDataSourceProperty("socketFactory", "com.google.cloud.sql.mysql.SocketFactory");
config.addDataSourceProperty("cloudSqlInstance", CLOUD_SQL_CONNECTION_NAME);
config.addDataSourceProperty("useSSL", "false");Rest所有配置保持不变。请查看同一这里的详细文档。
我已经成功地运行配置已经有一段时间了。
https://serverfault.com/questions/977092
复制相似问题