我有一个在Google App Engine弹性环境中运行的dotnet core 2.0应用程序。在同一Google项目中,我有一个Cloud SQL - MySQL数据库。在Cloud SQL实例详细信息页面上,在授权选项卡下,它声明:
在上面的示例中,端口是5432,这是PostgreSQL数据库的默认端口。对于MySQL数据库,请使用3306端口。
可以在此处找到完整的示例和部署到App Engine的说明:
此项目中的应用程序:全部已授权。
然而,除非我将0.0.0.0/0
路由添加到授权网络部分,否则我无法从我的应用程序访问数据库。
我该如何使我的应用程序访问数据库而不向全世界开放我的数据库?
2018年5月21日Jeffery Rennie的更新(接受答案)
App Engine现在支持使用端口号连接到Cloud SQL实例,而不是使用Unix域套接字。因此,现在您可以将类似以下内容添加到您的app.yaml
文件中:
beta_settings:
cloud_sql_instances: "your-project-id:us-central1:instance-name=tcp:5432"
在你的appsettings.json中的连接字符串中指定Host=cloudsql
:
"ConnectionString": "Uid=aspnetuser;Pwd=;Host=cloudsql;Database=visitors"
在上面的示例中,端口是5432,这是PostgreSQL数据库的默认端口。对于MySQL数据库,请使用3306端口。
可以在此处找到完整的示例和部署到App Engine的说明:
https://github.com/GoogleCloudPlatform/dotnet-docs-samples/tree/master/appengine/flexible/CloudSql