【发布时间】:2017-03-06 12:45:39
【问题描述】:
如何以安全的方式将 Google Cloud SQL 与应用程序(如 Google App Engine)和工具(如 mySQL 工作台)连接起来?
【问题讨论】:
标签: google-app-engine mysql-workbench google-cloud-platform google-cloud-sql
如何以安全的方式将 Google Cloud SQL 与应用程序(如 Google App Engine)和工具(如 mySQL 工作台)连接起来?
【问题讨论】:
标签: google-app-engine mysql-workbench google-cloud-platform google-cloud-sql
在本文档中,我们将了解如何创建 Google Cloud SQL 实例并将它们连接到您的 Google App Engine 应用程序和 MySQL Workbench 管理工具中。
谷歌云 SQL:
Google Cloud SQL 是一项完全托管的数据库服务,可让您轻松地在云中设置、维护、管理和管理您的关系 MySQL 数据库。
Google Cloud SQL 提供了一个关系数据库,您可以将其与您的 App Engine 应用程序一起使用。 Cloud SQL 是位于 Google 云端的 MySQL 数据库。
参考:
创建 SQL 实例:
Google Cloud SQL 实例是托管在 Google 云中的 MySQL 数据库。
单击选择第一代,输入名称并选择层级 实例并单击创建。
实例初始化完成后,选择实例 打开它。
在访问控制 > 用户中,单击创建用户帐户并创建一个 名为 root 的用户并指定密码 (root_password)。这 创建 MySQL 用户 'root'@'%'。
在“数据库”中,单击“新建数据库”并创建一个具有 数据库名称(DataBase_Name)
MySQL 工作台:
MySQL Workbench 是面向数据库架构师、开发人员和 DBA 的统一可视化工具。 MySQL Workbench 为服务器配置、用户管理、备份等提供数据建模、SQL 开发和综合管理工具。
参考http://www.mysql.com/products/workbench/
现在我们将了解如何使用 MySQL Workbench 连接到您的 Google Cloud SQL 实例数据库。
配置访问权限
转到 Google Cloud Platform 中的 Cloud SQL 实例页面 控制台并选择实例。
在访问控制 > IP 地址中,单击请求 IPv4 地址并复制 它(Instance_IPv4_address)。需要连接您的 Google Cloud 带有 MySQL Workbench 等管理工具的 SQL 实例数据库。
注意:您需要为 IPv4 地址付费 @ 实例不活动每小时 0.01 美元,实例活动每小时 0.1 美元
Google 'ip address' 查找您的公共 IP 地址
在访问控制 > 授权 > 授权网络中,单击添加 网络并输入您的 IP 地址。
正在连接
在 MySQL Workbench 主页视图中,单击新建连接。
在“设置新连接”窗口中,提供连接名称, 主机名和用户名
单击测试连接。系统将提示您输入密码。
一旦 MySQL 连接成功,点击 OK 并点击 保存的打开 SQL 编辑器的连接
谷歌应用引擎:
Google App Engine 是一个用于构建可扩展网络应用程序和移动后端的平台。 App Engine 将自动扩展您的应用程序。
参考https://cloud.google.com/appengine
现在我们将了解如何在 App Engine 应用程序和 Cloud SQL 实例之间建立连接。
配置访问权限
转到 Google Cloud Platform 中的 Cloud SQL 实例页面 控制台并选择实例。
在访问控制 > 授权 > 授权的 App Engine 应用程序,单击添加应用程序 ID 并输入应用程序 ID。 点击完成并保存。
在概览 > 属性中复制“实例连接名称” (Instance_Connection_Name)
在您的 Google Web 应用程序项目中, 战争/WEB-INF/appengine-web.xml 添加, 真的
代码示例:
Google App Engine 的一个例子 - Java 标准环境
public static Connection connect() throws ClassNotFoundException, SQLException {
String url = null;
{
if (SystemProperty.environment.value() == SystemProperty.Environment.Value.Production) {
// Connecting from App Engine.
Class.forName(Messages.getString("com.mysql.jdbc.GoogleDriver"));
url = Messages.getString("jdbc:google:mysql://{{Instance_Connection_Name}}/{{DataBase_Name}}?user=root&password={{root_password}}");
} else {
// Connecting from an external network or localhost
Class.forName(Messages.getString("com.mysql.jdbc.Driver"));
url = Messages.getString("jdbc:mysql://{{Instance_IPv4_address}}:3306/{{DataBase_Name}}?user={{userName}}&password={{password}}");
}
Connection conn = DriverManager.getConnection(url);
return conn;
}
}
【讨论】:
我想补充一下牛顿所说的:
实例连接名称不仅仅是您的“project_id:instance_id”。请转到 Google Cloud SQL 实例概述页面并复制“实例连接名称”字段中的值。 “实例连接名称”通常包含区域名称或其他值,因此请小心替换它。
【讨论】: